Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp2909648pxb; Tue, 24 Aug 2021 10:22:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyvOKrCC2TwESQQnGO3AZOGyj3V1Th4/5JkEGr3RX1Of47wFyn+4ujQ66qCvV8C2REbMYVi X-Received: by 2002:a92:ca85:: with SMTP id t5mr19565576ilo.109.1629825762913; Tue, 24 Aug 2021 10:22:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629825762; cv=none; d=google.com; s=arc-20160816; b=AAvWc6y0W7fd2vBMfhKdTV4my1pU2Yjo5NnzR6W9jxU3hbFXWrZfLWV8nZmPXmsBCM Iol0zss9TTEOJuU77kdzHz8tMReW2p3O7Yqt9HA54SXZAYSROAYKiNmxfUqjEfFZRC+y 2o8JtXS449KZlJwk5VmjsPg5yG61ktUE86kaQ1kpTPfQgMSa7IZOaJRFV3IE4SNZjYfu o7EeQYLaZf7Ed82znJLbJ3/dqyGgr5I0T0Q64OUTp2uBH7Y6IbY6J1vWfle3jDPYiX+f OzvtN5iLxOOWHcTy4CuI/soRqd7Yp+l3aWlB6wYeYoy2iv9dNJxf9t3qoZ2vJsqTUXwa VVXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=3B7YifReflwSoKikex++S/5sgzIPxSRWmWPWMiflYKM=; b=XpmYmtWYzd5VPTNvatrff7jjxLpXBbB3wAStB7VFKlpdiUzYO8aG2IDiNRAiE/A89L 8KWWnQYFGPsg0XqWky4m8bwaUY/1+fQysbVwuGR4XFIm9IzwCAjIn0qSUl7kFRQqfmEF 6i3tnmzszepDmBNY+WCl6TzHPSInMC2V96HyRtvf+gpwTR6ZlPmmBImOVyrwqgoG4Swz nrzwdVVyfEPdEJgXRndxGsC7R8plqTs9X6dTfzuclZ/Sz0Tqs7B5b+xqrNYZo4Slsi5F 8Znsr05EuI9p45vpkNk6Bu3BhSsJfjKzVeGyUeask5Mt8lrvchFbiM5ft1pbJlIgwrIB hdxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=bCfpLfWm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d3si1136186jak.6.2021.08.24.10.22.31; Tue, 24 Aug 2021 10:22:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=bCfpLfWm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238894AbhHXRW1 (ORCPT + 99 others); Tue, 24 Aug 2021 13:22:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:56448 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240652AbhHXRTd (ORCPT ); Tue, 24 Aug 2021 13:19:33 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 198B961A83; Tue, 24 Aug 2021 17:03:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1629824585; bh=zDgfXNzrQsD/TXkeREHA6nHAtybWq++I8lF2ftfW6aU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bCfpLfWmoNbPKGTvIIMx1YLKD6UbEcyUgfF/lPkhAQKmNP1wAl8WYyEhTFwlWJjf8 5fh6XHqXO4MYAe+WianN4N7wnwmGCb8IqgUBgy66EkR2GaRW4WNlj0yHVPFGIxWcWO mEoKUWqVbAFI9wybOPqmxk427aWhWJAqcPayL9+tBPMTmBelYOkqyEuJkPDdYXg1eR PGS3xptF1ox/xhC+55Ekre8dRGKhDPMjXb6Rcv/Wkbfp5iP4C+pUrbuKIeo7gti047 zIKBxCge6uoK0SIXHsGz3VZ+G9oER3h0+LJqU0lvbHnE6CnLHv1UIo96k4NBDXHrt1 /lHc9P3/5W8zQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: =?UTF-8?q?Pali=20Roh=C3=A1r?= , "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 14/84] ppp: Fix generating ifname when empty IFLA_IFNAME is specified Date: Tue, 24 Aug 2021 13:01:40 -0400 Message-Id: <20210824170250.710392-15-sashal@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210824170250.710392-1-sashal@kernel.org> References: <20210824170250.710392-1-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.205-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.205-rc1 X-KernelTest-Deadline: 2021-08-26T17:02+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Pali Rohár [ Upstream commit 2459dcb96bcba94c08d6861f8a050185ff301672 ] IFLA_IFNAME is nul-term string which means that IFLA_IFNAME buffer can be larger than length of string which contains. Function __rtnl_newlink() generates new own ifname if either IFLA_IFNAME was not specified at all or userspace passed empty nul-term string. It is expected that if userspace does not specify ifname for new ppp netdev then kernel generates one in format "ppp" where id matches to the ppp unit id which can be later obtained by PPPIOCGUNIT ioctl. And it works in this way if IFLA_IFNAME is not specified at all. But it does not work when IFLA_IFNAME is specified with empty string. So fix this logic also for empty IFLA_IFNAME in ppp_nl_newlink() function and correctly generates ifname based on ppp unit identifier if userspace did not provided preferred ifname. Without this patch when IFLA_IFNAME was specified with empty string then kernel created a new ppp interface in format "ppp" but id did not match ppp unit id returned by PPPIOCGUNIT ioctl. In this case id was some number generated by __rtnl_newlink() function. Signed-off-by: Pali Rohár Fixes: bb8082f69138 ("ppp: build ifname using unit identifier for rtnl based devices") Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ppp/ppp_generic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c index 1af47aaa7ba5..dc9de8731c56 100644 --- a/drivers/net/ppp/ppp_generic.c +++ b/drivers/net/ppp/ppp_generic.c @@ -1125,7 +1125,7 @@ static int ppp_nl_newlink(struct net *src_net, struct net_device *dev, * the PPP unit identifer as suffix (i.e. ppp). This allows * userspace to infer the device name using to the PPPIOCGUNIT ioctl. */ - if (!tb[IFLA_IFNAME]) + if (!tb[IFLA_IFNAME] || !nla_len(tb[IFLA_IFNAME]) || !*(char *)nla_data(tb[IFLA_IFNAME])) conf.ifname_is_set = false; err = ppp_dev_configure(src_net, dev, &conf); -- 2.30.2