From patchwork Mon May 13 15:05:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Mikityanskiy X-Patchwork-Id: 1098946 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="Bc/2eLFn"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 452kds4rP0z9s4Y for ; Tue, 14 May 2019 01:05:37 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728936AbfEMPFg (ORCPT ); Mon, 13 May 2019 11:05:36 -0400 Received: from mail-eopbgr00089.outbound.protection.outlook.com ([40.107.0.89]:7317 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728169AbfEMPFd (ORCPT ); Mon, 13 May 2019 11:05:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZFDSK5DxBJQzwHbDhWqgFS3jl7aDFNqPf8+m1OOKD6E=; b=Bc/2eLFnguG0XmPIJcrZbsFMP2t/z8VWJr4T291YJE1R28rgw1UZHNHG66EhaWRKGZH2ng8OUB0GDAWA+ydy6pNdekWmkvzBQs2SPKRMYqomgrVkTD8jSFtaeyfHWJBdRk5Z+4L6kqBzBz/Kih9fAu2rO7HuaFalRhGUN3ZvAa8= Received: from AM6PR05MB5879.eurprd05.prod.outlook.com (20.179.0.76) by AM6PR05MB6200.eurprd05.prod.outlook.com (20.178.95.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1878.22; Mon, 13 May 2019 15:05:29 +0000 Received: from AM6PR05MB5879.eurprd05.prod.outlook.com ([fe80::3cb0:9252:d790:51e2]) by AM6PR05MB5879.eurprd05.prod.outlook.com ([fe80::3cb0:9252:d790:51e2%7]) with mapi id 15.20.1878.024; Mon, 13 May 2019 15:05:29 +0000 From: Maxim Mikityanskiy To: "David S. Miller" , Alexey Kuznetsov , Hideaki YOSHIFUJI CC: "netdev@vger.kernel.org" , Leon Romanovsky , Maxim Mikityanskiy Subject: [RFC 1] Validate required parameters in inet6_validate_link_af Thread-Topic: [RFC 1] Validate required parameters in inet6_validate_link_af Thread-Index: AQHVCZ1NeDPGjPYhgkO1bTpE25PzGw== Date: Mon, 13 May 2019 15:05:29 +0000 Message-ID: <20190513150513.26872-2-maximmi@mellanox.com> References: <20190513150513.26872-1-maximmi@mellanox.com> In-Reply-To: <20190513150513.26872-1-maximmi@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0447.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:e::27) To AM6PR05MB5879.eurprd05.prod.outlook.com (2603:10a6:20b:a2::12) authentication-results: spf=none (sender IP is ) smtp.mailfrom=maximmi@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.19.1 x-originating-ip: [141.226.120.58] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 24c79cbc-ab3e-40f5-40b3-08d6d7b4702a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:AM6PR05MB6200; x-ms-traffictypediagnostic: AM6PR05MB6200: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6430; x-forefront-prvs: 0036736630 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(199004)(189003)(86362001)(50226002)(478600001)(186003)(6436002)(6486002)(5660300002)(476003)(26005)(81166006)(99286004)(6116002)(14454004)(81156014)(256004)(3846002)(14444005)(53936002)(4326008)(107886003)(25786009)(8676002)(2616005)(71190400001)(71200400001)(8936002)(486006)(7736002)(316002)(73956011)(102836004)(305945005)(2906002)(52116002)(66066001)(110136005)(54906003)(11346002)(386003)(36756003)(6506007)(15650500001)(68736007)(6512007)(76176011)(64756008)(66446008)(1076003)(66556008)(66476007)(446003)(66946007); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB6200; H:AM6PR05MB5879.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: RN2PNpOfNgIbjNyZ57LCWw3jExlQlJEaCPMMzZV1mW89YwDIm3A8o8VOY1Bv5EI4yuZEYV2fEgEQ2omTIlG8fcJu8lcjaB3fZiWTuNWUl+JHHmlbXtY9K2EtiiT+xmHQQxhRg942R/MSlX0G1zgde0iSX5mQIgNoe/jxrQIJBvFPNaDyQlr3j7xSldxkGLttZbscCOZtAQQckAwfSlb0NfV+FRZ22D9bK0JFZN2WGDF0zlJ1xPMYHoRb+1oo6j9eVV7787pLqbpKaAbm6qsAzpgFljiUBq4omxmy7pEnBwWVzggHg3SAN/cu9DfisXvYX6uYJnz0AM/XggkmPfTPnnx72hFDrhv3z3gS6te4Ok/ooMYdlLYNf9LOnmeGPFlghIr8bckgKqDGkddB3FOqiken5rlKs49qmSZYKXcR/Fs= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24c79cbc-ab3e-40f5-40b3-08d6d7b4702a X-MS-Exchange-CrossTenant-originalarrivaltime: 13 May 2019 15:05:29.8504 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB6200 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org inet6_set_link_af requires that at least one of IFLA_INET6_TOKEN or IFLA_INET6_ADDR_GET_MODE is passed. If none of them is passed, it returns -EINVAL, which may cause do_setlink() to fail in the middle of processing other commands and give the following warning message: A link change request failed with some changes committed already. Interface eth0 may have been left with an inconsistent configuration, please check. Check the presence of at least one of them in inet6_validate_link_af to detect invalid parameters at an early stage, before do_setlink does anything. Signed-off-by: Maxim Mikityanskiy --- net/ipv6/addrconf.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index f96d1de79509..ef38d381ccbd 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -5665,12 +5665,20 @@ static int inet6_validate_link_af(const struct net_device *dev, const struct nlattr *nla) { struct nlattr *tb[IFLA_INET6_MAX + 1]; + int err; if (dev && !__in6_dev_get(dev)) return -EAFNOSUPPORT; - return nla_parse_nested_deprecated(tb, IFLA_INET6_MAX, nla, - inet6_af_policy, NULL); + err = nla_parse_nested_deprecated(tb, IFLA_INET6_MAX, nla, + inet6_af_policy, NULL); + if (err) + return err; + + if (!tb[IFLA_INET6_TOKEN] && !tb[IFLA_INET6_ADDR_GEN_MODE]) + return -EINVAL; + + return 0; } static int check_addr_gen_mode(int mode)