From patchwork Mon Feb 10 13:29:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiao Liang X-Patchwork-Id: 864043 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 360972236FF; Mon, 10 Feb 2025 13:30:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739194228; cv=none; b=b4ic+a37SpcRVOrBkVKEOvGEAgwot0PtYhh5Tf9wma4NYgKVIgY3bbIjLFSLy1A1NAoHo2G8VtMFtTbIvwGTynlQUCruy2y26nA0XD0R/n4wJE8fTMz86vSFOR9dfVb2A1U//bE2RxnZhNRKFkjejoOD7HLYZyB9aUJZn5l33NM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739194228; c=relaxed/simple; bh=GjfoXCki/WJvjmnx4S+xzsgMh0oaUaBRvXwm00gIc9Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bbWboGAKTm32NyAdgrzwDkZqBupbAWBILZiApFkRbiPdwER/o/whP/37wXVALu1bkvZWzJl8gY8rY8VZMEQcBh6xyF0dfOp0a5wsFRNrQX/4Ga5XN43DcNfCRyE/YBFrAL0dhjWu3myLNYJAKFHiB0Pdk/CJLNFOZw1I96TIog0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=l7zhZWie; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="l7zhZWie" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-21f7f03d7c0so28828615ad.3; Mon, 10 Feb 2025 05:30:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739194226; x=1739799026; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1pf9SNTQbR6dSoBCEAV6dPuN8Gz1/YecnHQoz2AJqpo=; b=l7zhZWiegsCqo2a522+QRmFU8ReWGBta6pQekMDMWL3DQ4cUeiYw0+j0nh0v5eV4Bw 53ERdwNr+ARI1Cikr1M6dXNCBfZNkXFOuE871vFEkbn8DICWoBJrlSG8XdVdr40P/bxr oqaEdXLZzJFBdiVG9XCAPQ/b9VnX2Ss0keS2BHRyPivrYaYZriZlDW8nrZk2M6TAR9bs UoH7MXzFO9RF/0vp7+vINXF/VdFXKyW4XjSEmjBOUZ8NXTHcgusQa+VPCSZ9yfVksDU4 21CRFZ4owtNApzS542JuJf/ViK2CEY+hM79gVThdZpfg0voTg5Mm3kcpyQAOnuoLGhMJ 4AlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739194226; x=1739799026; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1pf9SNTQbR6dSoBCEAV6dPuN8Gz1/YecnHQoz2AJqpo=; b=fUAhSICIBAfuTKQq7gWc6Vpv/bJW8eJm/7vhCxBNjIyOFT4AjDZ2WDUt0hCkvNHhNX ZqbNO63sUWM9YM0UtjW6SnAdrnaKihrtzHd/qHyySkAb2mCODAF/EkI8+gYLk4/ihWqJ rWe6y0naoDwcSYJw6U7RupgR8jT145KGW+ylxA7pFY3+xybNLsyslNGU9w1FCeSC2DqS 86Cl/EK4vG9xFqs/AnbgC75qFasBGFveO453Q+BRxVI/S2Rz7StsrSuMd9IuAe0emlkU wdWTa/DxDs8kX8rJaBAMNbSntOqmhSCe9yYmwuu3HSoiPy8ln+/o5BuTeAySxU7yVUdX KHfg== X-Forwarded-Encrypted: i=1; AJvYcCUP5+V/YZgf6zpIk8dkrAx+nAD9gJepSbCzmNMDgQ8vQKvuQ+Fgux6jbJMMHH/OoK2CC5jX63JcTm8o@vger.kernel.org, AJvYcCUYz4CwpzuFAGa3m5qyd0xg5eg9x2GQKvuXNXTeKx+89U55xbcT8u9qq3j5GpcDq0UUPk8=@vger.kernel.org, AJvYcCVasPHnN4+fiiluianPgNM7BJuEk+Y+jebKu11olccxxvnQuzJKw49URKYr9VUgNM6kBhNdKE/8luK5og==@vger.kernel.org, AJvYcCVziuYSNeYPDJ3NRugiFtrjS087p9qvpx5hy3PeNC5BwFFz2cd3uVPMyvoT1XPL0woThuyZ+9IaCv43pUs2@vger.kernel.org, AJvYcCWEXo+Lp4idfsjgOi7h3iM0rVNed28M7PJZ+6mpv0saAgfiAQjoOblztN88Y6LJ0p9/D3PaB4r+1Bn4SNJDAb4=@vger.kernel.org, AJvYcCX2gOsID7FCs+646zeG2l441GzDdcb9sgjUUtslEdB4qecAD9vh1ESJI4nBSfwC6Z7ypmXlR61qavORqXE/MOuu@vger.kernel.org, AJvYcCX6jrnIqV46jJg1w8KrQd5Whm96gjrITzeLYgiSDTPgGsdReQhDeWxYIEkfkYmJs/RPsf5O2Qu40bPZ8g==@vger.kernel.org, AJvYcCXlfROk2co/7Vlc4VFGPXPvBMmrtwjU5MNCN8eOV8G5Pw4OZ9+MkNqg7C9opjZAcHqh37oL5C5zwAYe@vger.kernel.org X-Gm-Message-State: AOJu0Yy/GXkBkAAl4g+10af0QyUDX7GQlYjGkhPmZNLJD/elA5BnVC85 /P+LqFxCAGQKv8/PXSLH2z8eVBGOPdDfQr0q7aCQiKdZVmZhrQ5OZVBt2Dna X-Gm-Gg: ASbGncu6qGMhy53Ri/FY2ifSrIwYAxzbvN6Q1T5u5qv47QWFJ1Zhb/wpvzyNeRI3RFw sdSKWr7JBa8S2YuhgG6IvtIfXX5YVHHhBGT+o/hlHTEADfyjD8wemDBtruXaCAezsTMGv2lT8G6 sA8dkrybBLNP7KVo3eayxeTS2pfURqg8urGNnr0Sqy9s0CQKSzODqk1h29Lp6v0AzqdVxp/e0db goA/nuxxJbp0zRErLc8vnIN3Uj474ojhuveSeqCETZ79EkwtrXLgXceoO6eNlPW8M4sRtYZby5n IxrPeg== X-Google-Smtp-Source: AGHT+IHnIbIec9duqjv7lrtmGReNVQPeBtoczKplB0CDd7UUW+fM90Yj1MwAFqvvYB9Zquhv6onO5g== X-Received: by 2002:a17:903:240f:b0:216:7cde:523 with SMTP id d9443c01a7336-21f4e739f99mr242405235ad.32.1739194225944; Mon, 10 Feb 2025 05:30:25 -0800 (PST) Received: from ws.. ([103.167.140.11]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21f3653af3bsm78799445ad.57.2025.02.10.05.30.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 05:30:25 -0800 (PST) From: Xiao Liang To: netdev@vger.kernel.org, linux-kselftest@vger.kernel.org, Kuniyuki Iwashima , Jakub Kicinski Cc: "David S. Miller" , David Ahern , Eric Dumazet , Paolo Abeni , Andrew Lunn , Simon Horman , Shuah Khan , Donald Hunter , Alexander Aring , Stefan Schmidt , Miquel Raynal , Steffen Klassert , Herbert Xu , linux-rdma@vger.kernel.org, linux-can@vger.kernel.org, osmocom-net-gprs@lists.osmocom.org, bpf@vger.kernel.org, linux-ppp@vger.kernel.org, wireguard@lists.zx2c4.com, linux-wireless@vger.kernel.org, b.a.t.m.a.n@lists.open-mesh.org, bridge@lists.linux.dev, linux-wpan@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v9 01/11] rtnetlink: Lookup device in target netns when creating link Date: Mon, 10 Feb 2025 21:29:52 +0800 Message-ID: <20250210133002.883422-2-shaw.leon@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210133002.883422-1-shaw.leon@gmail.com> References: <20250210133002.883422-1-shaw.leon@gmail.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 When creating link, lookup for existing device in target net namespace instead of current one. For example, two links created by: # ip link add dummy1 type dummy # ip link add netns ns1 dummy1 type dummy should have no conflict since they are in different namespaces. Signed-off-by: Xiao Liang Reviewed-by: Kuniyuki Iwashima --- net/core/rtnetlink.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index cb7fad8d1f95..3b3398283a8f 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -3866,20 +3866,26 @@ static int __rtnl_newlink(struct sk_buff *skb, struct nlmsghdr *nlh, { struct nlattr ** const tb = tbs->tb; struct net *net = sock_net(skb->sk); + struct net *device_net; struct net_device *dev; struct ifinfomsg *ifm; bool link_specified; + /* When creating, lookup for existing device in target net namespace */ + device_net = (nlh->nlmsg_flags & NLM_F_CREATE) && + (nlh->nlmsg_flags & NLM_F_EXCL) ? + tgt_net : net; + ifm = nlmsg_data(nlh); if (ifm->ifi_index > 0) { link_specified = true; - dev = __dev_get_by_index(net, ifm->ifi_index); + dev = __dev_get_by_index(device_net, ifm->ifi_index); } else if (ifm->ifi_index < 0) { NL_SET_ERR_MSG(extack, "ifindex can't be negative"); return -EINVAL; } else if (tb[IFLA_IFNAME] || tb[IFLA_ALT_IFNAME]) { link_specified = true; - dev = rtnl_dev_get(net, tb); + dev = rtnl_dev_get(device_net, tb); } else { link_specified = false; dev = NULL; From patchwork Mon Feb 10 13:29:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiao Liang X-Patchwork-Id: 864042 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D8DB1222579; Mon, 10 Feb 2025 13:30:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739194257; cv=none; b=dTeQ2q2a5s0rZ05FyALj01DspcT7+gckbfaO+RJ0a4iuo7dBk+J8+4UUoAWzfHttDBmP0yydYI41vnWsmqANQD1s1fl8B3HSNfNua1qQ30Qg6I/APWdYPapaQylv3XY1x4ev7dFGzhG6I9op86Hmza8UtH3YhiAsGaHh4noDH3o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739194257; c=relaxed/simple; bh=2u3aiZwG7nXyk2L47N18SQQLK/lDv6g+qT0nQKd4pSs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RVjvNTgscK9y5myhrlgw6WGu5fAu8a6lATRGFTIKH3pz5x/hpeT5XEf13KP2Ez22+2v6cyBP1j4qEcUzqExOGxV+l+ci1mmyYEYQKL5q05uaDdtBkjXfVX8oQagl61L5Ah6B1gtAprUNk6xGj3AilP9URoccBiZD7cpTzsyJ5qA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SlcJ+47w; arc=none smtp.client-ip=209.85.214.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SlcJ+47w" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-21f2339dcfdso68365765ad.1; Mon, 10 Feb 2025 05:30:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739194254; x=1739799054; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0tN6LBIpl7aUsxZAQ1nC9Mvrd+HBX5wlThy/HCxYMvw=; b=SlcJ+47wGGDUbl8sV5PwIW7AoAxfUG7nCeJM5ww7b+nw0BiGPXIl8QA6yS5m3t/QJ8 x7QFuIGD2iVmE1pY7/2y9PT0sO03WioE+Rn1tgNCwBzbcvp3OVBaWTPvPwEJ0p5gvdPq q2CCrtUoARx/4aYWuiCPkFgIXtgGXDqPz9fiKFxrQ4UFEoQS0e2g/v0RoCmCDfPAnvXu 1+7laLyJ5HbpSZxKZTRijbfnAYCzQ2Kdo4eco51Rv7zQDUcLeYxsid2ED4X4nzcMmC+/ EyqNK3sFOOT4oS9VwDZlKmll5J6ZlzdAulvS/vAr8804aWjkFd2YbdndBmyKeGRAvEsY 5XHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739194254; x=1739799054; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0tN6LBIpl7aUsxZAQ1nC9Mvrd+HBX5wlThy/HCxYMvw=; b=tSKD1z1QhoLZlnEm1256y8ZQSsBE4IxrtyFYd7YB195lKRYkpmtnQlO4qjWJSYErhl HGZkeROP6jYSIIkZXcONUFfQV18OtsSHze42KJDk2/nh7UxFJBKQO6pYX63w/OhIlcle Y+5LINgTbyBk+SO+L8ta3rk60pAS2p+PfuETwr97jBE5gR9foeBlo3aVgH7I4GN/8q3c YfiunFME73w+RQrgxpk9PhtOJyegDTQVODbGHAW3VnJbePzt4OQFqJEwdgnCHwJcOG2g AfoupIva9e3xY86iSlyc+6eHsDxFv8H7XQjzUIN5qo3uAckTuTXOxHMj44qnFMTeba/+ C+Xg== X-Forwarded-Encrypted: i=1; AJvYcCUJ0l8At6FJ/SYLME2PzXx4uRE6mFl8dBanUGBiqqq8Th0huJqssV7lTN2hZg5bQBCFuurWkwBUo6kN4/GOHp98@vger.kernel.org, AJvYcCUU4Tq9SrFX+qOF1eRqOt00onrXZu7fPDDIEZCgzQEu5JwC+BZiXf1sNqXpTOuCLh0SjQGbFUD5Kdd8Tg==@vger.kernel.org, AJvYcCUw9B/WT94e/UE+JT45D5MSfLjZ99ZNmphmlSClc+QX+fLqLxb8IZEvxYMqbCKn0aKYE2Fs4mhEf0Kr@vger.kernel.org, AJvYcCV16on7V3lLlXPY3K/c+ui6kODu984DDNS4gJ71eNzIe6DGFv54o/nP1srnuC5MQkDb3qjU5wTyIWA+xQ==@vger.kernel.org, AJvYcCWhTQybiO587wGgTUhWun4rJFb78pXupN/PGofz7uesaeEGuYTAMB82jx3OUmX06KkgrAOkQt7ZaKHt@vger.kernel.org, AJvYcCWxVXImtm2cTF8o49+hZG3dmZaoyEI07XHaAtwB67E8X+zgA1PJEdO8WOOPJ9FobS/1Wpo=@vger.kernel.org, AJvYcCX2/Q/wRJi1qtNjs0TVJJtRrEY2xbU538zws2rvOoDo9AsieKOAFxLlRLmtdYpn5qJ3d5CvEYkqtHKN+ohc@vger.kernel.org, AJvYcCXSS1VY8u/saK2+CYLbadSMVWG96/xSZS1OXLqiTUxP6WytnNDaeh94Kq/LZ5aD28sAgGJFBCvagibN3FamzRc=@vger.kernel.org X-Gm-Message-State: AOJu0Yy3UoaZX78phZhN/gNgzJ/lTcYubxrZ4Ga6F3pU0HBvD7ezlWmB JB4lyAuCRRD3sjIBEOpJYtyGYZ7KlysFjzQ9ThvU6PNT7elw2ymGiA6v3GrdhCg= X-Gm-Gg: ASbGnct26Cxl6MhRehdV9Cixw4wUpwYfB5zm0PfHyGQm7gb6/hRuaNiOEi+2dpXd+jm lyWYRYR9VpySJ1eXDy0svlbWp79S5XbvCkWQoIakUFltBnjb9K9sd8ySZrp4A+VrHHSL1x2UTCO P3lxO7b01c+wVMCKgoQgAEdYMmbdEuaPerrtogVSyYkdzcwUitB8Mpo+sARtUEDz+TJy+v+m8da 5Y4uOzVeOdwoYV+R2c5IFTNGw9tAx7NvL9JlR5HJOSo2pq243Q7lmwmQk9e0tRjuhLuzmqKkhDz GLjrPQ== X-Google-Smtp-Source: AGHT+IF8gihjdkRbSU1HRP8R4mEppMkEAKGDChElxIvCxKcXV79FUInFhj/RnX7alUKIg2RAq5xNnw== X-Received: by 2002:a17:903:46cc:b0:21f:6d63:6f4f with SMTP id d9443c01a7336-21f6d636ff1mr134607475ad.2.1739194253851; Mon, 10 Feb 2025 05:30:53 -0800 (PST) Received: from ws.. ([103.167.140.11]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21f3653af3bsm78799445ad.57.2025.02.10.05.30.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 05:30:53 -0800 (PST) From: Xiao Liang To: netdev@vger.kernel.org, linux-kselftest@vger.kernel.org, Kuniyuki Iwashima , Jakub Kicinski Cc: "David S. Miller" , David Ahern , Eric Dumazet , Paolo Abeni , Andrew Lunn , Simon Horman , Shuah Khan , Donald Hunter , Alexander Aring , Stefan Schmidt , Miquel Raynal , Steffen Klassert , Herbert Xu , linux-rdma@vger.kernel.org, linux-can@vger.kernel.org, osmocom-net-gprs@lists.osmocom.org, bpf@vger.kernel.org, linux-ppp@vger.kernel.org, wireguard@lists.zx2c4.com, linux-wireless@vger.kernel.org, b.a.t.m.a.n@lists.open-mesh.org, bridge@lists.linux.dev, linux-wpan@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v9 04/11] ieee802154: 6lowpan: Validate link netns in newlink() of rtnl_link_ops Date: Mon, 10 Feb 2025 21:29:55 +0800 Message-ID: <20250210133002.883422-5-shaw.leon@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210133002.883422-1-shaw.leon@gmail.com> References: <20250210133002.883422-1-shaw.leon@gmail.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Device denoted by IFLA_LINK is in link_net (IFLA_LINK_NETNSID) or source netns by design, but 6lowpan uses dev_net. Note dev->netns_local is set to true and currently link_net is implemented via a netns change. These together effectively reject IFLA_LINK_NETNSID. This patch adds a validation to ensure link_net is either NULL or identical to dev_net. Thus it would be fine to continue using dev_net when rtnetlink core begins to create devices directly in target netns. Signed-off-by: Xiao Liang --- net/ieee802154/6lowpan/core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/ieee802154/6lowpan/core.c b/net/ieee802154/6lowpan/core.c index 704bf9e3f097..ee318d46817d 100644 --- a/net/ieee802154/6lowpan/core.c +++ b/net/ieee802154/6lowpan/core.c @@ -143,6 +143,8 @@ static int lowpan_newlink(struct net_device *ldev, if (!tb[IFLA_LINK]) return -EINVAL; + if (params->link_net && !net_eq(params->link_net, dev_net(ldev))) + return -EINVAL; /* find and hold wpan device */ wdev = dev_get_by_index(dev_net(ldev), nla_get_u32(tb[IFLA_LINK])); if (!wdev) From patchwork Mon Feb 10 13:29:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiao Liang X-Patchwork-Id: 864041 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 550C222FE0D; Mon, 10 Feb 2025 13:31:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739194275; cv=none; b=N+BAvRVvPfVUIv79wBkHvhpUaIzP8p1M1SDV+I8etdH5vKuq3A6vSRTV7IHgx37Tj1u/LmEY4kCRP8i0DH8egf03waXqropK0VISiFf2jb033TNCEHfbv14c5Q1ogLMBCt3IKpDLbhAjRd4ngYm5SB71eAUsNplUqTfBCcWRzlU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739194275; c=relaxed/simple; bh=aoKU4ituN+1jSNYs7r3BEr8KfB/a6ZxvOfaMjf8sPJY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Iq9OOJwu92GyyFL7kd+zBq0rOySjY4wldeZ0rZpD+RUwyXDWswvxMLBgoq1+NAzMc0lPM2UHIRoZJlTQUCgLPxvmXdFetaTOVKURxjI9brJfrLJ435Lu5P9JBRTUPeKPEjFYgHiwUfeswCjlm3OztBCQOvVuyvZxBC1E4M5YFmk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mAuKR8Qi; arc=none smtp.client-ip=209.85.214.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mAuKR8Qi" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-21f6d264221so21884925ad.1; Mon, 10 Feb 2025 05:31:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739194272; x=1739799072; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Qor1B34U3phrXDWeQbB/j8tAelAUjHbXmA4D1BB6HEE=; b=mAuKR8Qi4pKkK0U5BcYVlwS7nHS+3Ds1GexN+jjzuz6QG9+qECV7GVqmn9XLRLaQps sl+oP9X3UUWZofMSBQ2RWSAAIb6t5Tv2JGHtjqX31RvlHjexL8sYsYPAGWQ5B+QhmzzD tF2QFLJFdPFvCp1VjkJwNo4qZEKMM/13vYo61IVNErUsnL5ayxdYMDFmHsRtoUAZCcLd tte9906SgxCzFu/NjuEqY2RNvtI0LJaajSadXdfjvwSWYLqhvqcqPPRwE9Lib2sqoTlt dJHNzNW+Vto0bPS97oKdwfc0EMEvxs+giyQsPHp/h2RGDERrPqIA90JKoSwdFESZhnG9 V/xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739194272; x=1739799072; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Qor1B34U3phrXDWeQbB/j8tAelAUjHbXmA4D1BB6HEE=; b=Lf1iArCqzP0r1z/Z6XT0jgxdk2egABXcWLAYSTYGMWaq2AeTXNqgTK1jcFHrs4XFgy ThwPFOJJAYJXjNJwLcUAP6/OHCafm2Nen508Q/1AckBickCsgVBfe3qt2fb5mWwyAqIl vRofQYorsyET3R0mvbo30EhWGI/fuKE+i7tDmIaT+w8B1ED5R+oRkK9L23Z2ojDeBUTN h3OtzQ+jp1cVCuK1ETus180EImPrSYprREutHH3z2RqwywWEGTdICKdr4tncW1/QMWK2 RtM7+nUsS73kdv2bVaK6VClUaXPCkSSqO3tfWm9Hr6NbyvRDDgOHKZp7FRA1MsPBCbSC p+GA== X-Forwarded-Encrypted: i=1; AJvYcCVqXAEuVOziiA3Bv/gmJN2FOVKWhQVCjP9MBwATLdhiJviX/kSKn9WXLsJoCXjQkV0U9M7cpsg3aIfTb/ZuXys=@vger.kernel.org, AJvYcCVrnxo5t1XMlKhq1c2IgKRjSrSSq+/W0D7KKopgMLQVf2fvBp1a4iozQZ1k8hp75Q19n2TkRVdZeUTC3sbT@vger.kernel.org, AJvYcCVz3vL3Skm5koZI+Yx1l5Dz/nDEKNNJLS2T/hy7SQ879lh5jJTLID70xTqEsmkQ/hLp/zY=@vger.kernel.org, AJvYcCWC5MixxVnhidX6bRuNjBq/12KuZ0shdhsy55Qegdo2wajXzVBPe3h+QoEgfo/d1g7HZ57wh+cKGsaDT4H6izqw@vger.kernel.org, AJvYcCWN1x/j/pOpFzKoqFzbBqU2lDN3ct8YJLlUIgqPp7t7G/zLVkPqYpNKZdYQNTAw3B7ESoJFgapm2b8yWA==@vger.kernel.org, AJvYcCWR3h3F6dzSDHcTY+G5zBC2ggbprbCW1yUNxtn9sJhPXd64chscE2YvbfKM24afDZhRRmorDEYuwuaI@vger.kernel.org, AJvYcCWS94QJ7971n1r6Q2PAoFpHy2Vpev/sGBq6iQRPIJ/WIhzGFUe/TZFIRQrviHjnubn2fyKMzboYm8r1EQ==@vger.kernel.org, AJvYcCWk8xzHm3WPkk76cf3PkBGHH7wsRj6l+JRFdJP2sl70ZaWtEUA5Ron01+UPsQO8QXoHBnpsC4QRjsRC@vger.kernel.org X-Gm-Message-State: AOJu0YyQnNNEVJ74hLe2KiWzPNNEaQoaO6UxS37xPNQgZcQvHGIdI5d/ egOKlWjay72C1DdsGy5G4S7S+I6zXuRhgpEF9iPGwcKqWaX1mX6/PbnKFXF/97g= X-Gm-Gg: ASbGnctvaj52ZhXE7UbXL6U/zI/MLZ8Ab5c+2rApYwifZsciSTy1sffU6kWXGeGZrNZ wnA3B7ELUp7s8vIzY52P0GdLSdL7x9WsgYennElGZ9cfioI++unBIfFxZJbtSobt/dr5yuCSx33 xt92mt1MZrKC82etC6kBW3ovdypIE494gcRmyK9Et8Ij4UD0l3m+dbA5AacAV3Mbf2Opp028Ahh HMr7tUOtpbspIT99hfS0cWT0VJMGycOaB8M7HOobIk12Fz5O/wDbp0rE9KRW3GfYUJ18hSmzz6D 5c2G+w== X-Google-Smtp-Source: AGHT+IFCFfI6vwnuduAlE62ZWjGMFvRKTwncJUJKPQ14C3FGCNohEq5KLKAyTOyXoZyqMzbv5RHKHA== X-Received: by 2002:a17:903:1a06:b0:216:6769:9eca with SMTP id d9443c01a7336-21f4e73acf5mr177842015ad.37.1739194272042; Mon, 10 Feb 2025 05:31:12 -0800 (PST) Received: from ws.. ([103.167.140.11]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21f3653af3bsm78799445ad.57.2025.02.10.05.31.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 05:31:11 -0800 (PST) From: Xiao Liang To: netdev@vger.kernel.org, linux-kselftest@vger.kernel.org, Kuniyuki Iwashima , Jakub Kicinski Cc: "David S. Miller" , David Ahern , Eric Dumazet , Paolo Abeni , Andrew Lunn , Simon Horman , Shuah Khan , Donald Hunter , Alexander Aring , Stefan Schmidt , Miquel Raynal , Steffen Klassert , Herbert Xu , linux-rdma@vger.kernel.org, linux-can@vger.kernel.org, osmocom-net-gprs@lists.osmocom.org, bpf@vger.kernel.org, linux-ppp@vger.kernel.org, wireguard@lists.zx2c4.com, linux-wireless@vger.kernel.org, b.a.t.m.a.n@lists.open-mesh.org, bridge@lists.linux.dev, linux-wpan@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v9 06/11] net: ipv6: Use link netns in newlink() of rtnl_link_ops Date: Mon, 10 Feb 2025 21:29:57 +0800 Message-ID: <20250210133002.883422-7-shaw.leon@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210133002.883422-1-shaw.leon@gmail.com> References: <20250210133002.883422-1-shaw.leon@gmail.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 When link_net is set, use it as link netns instead of dev_net(). This prepares for rtnetlink core to create device in target netns directly, in which case the two namespaces may be different. Set correct netns in priv before registering device, and avoid overwriting it in ndo_init() path. Signed-off-by: Xiao Liang --- net/ipv6/ip6_gre.c | 20 ++++++++++---------- net/ipv6/ip6_tunnel.c | 13 ++++++++----- net/ipv6/ip6_vti.c | 10 ++++++---- net/ipv6/sit.c | 11 +++++++---- 4 files changed, 31 insertions(+), 23 deletions(-) diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c index 863852abe8ea..108600dc716f 100644 --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c @@ -1498,7 +1498,8 @@ static int ip6gre_tunnel_init_common(struct net_device *dev) tunnel = netdev_priv(dev); tunnel->dev = dev; - tunnel->net = dev_net(dev); + if (!tunnel->net) + tunnel->net = dev_net(dev); strcpy(tunnel->parms.name, dev->name); ret = dst_cache_init(&tunnel->dst_cache, GFP_KERNEL); @@ -1882,7 +1883,8 @@ static int ip6erspan_tap_init(struct net_device *dev) tunnel = netdev_priv(dev); tunnel->dev = dev; - tunnel->net = dev_net(dev); + if (!tunnel->net) + tunnel->net = dev_net(dev); strcpy(tunnel->parms.name, dev->name); ret = dst_cache_init(&tunnel->dst_cache, GFP_KERNEL); @@ -1971,7 +1973,7 @@ static bool ip6gre_netlink_encap_parms(struct nlattr *data[], return ret; } -static int ip6gre_newlink_common(struct net *src_net, struct net_device *dev, +static int ip6gre_newlink_common(struct net *link_net, struct net_device *dev, struct nlattr *tb[], struct nlattr *data[], struct netlink_ext_ack *extack) { @@ -1992,7 +1994,7 @@ static int ip6gre_newlink_common(struct net *src_net, struct net_device *dev, eth_hw_addr_random(dev); nt->dev = dev; - nt->net = dev_net(dev); + nt->net = link_net; err = register_netdevice(dev); if (err) @@ -2009,11 +2011,10 @@ static int ip6gre_newlink(struct net_device *dev, struct rtnl_newlink_params *params, struct netlink_ext_ack *extack) { + struct net *net = params->link_net ? : dev_net(dev); struct ip6_tnl *nt = netdev_priv(dev); struct nlattr **data = params->data; - struct net *src_net = params->net; struct nlattr **tb = params->tb; - struct net *net = dev_net(dev); struct ip6gre_net *ign; int err; @@ -2028,7 +2029,7 @@ static int ip6gre_newlink(struct net_device *dev, return -EEXIST; } - err = ip6gre_newlink_common(src_net, dev, tb, data, extack); + err = ip6gre_newlink_common(net, dev, tb, data, extack); if (!err) { ip6gre_tnl_link_config(nt, !tb[IFLA_MTU]); ip6gre_tunnel_link_md(ign, nt); @@ -2248,11 +2249,10 @@ static int ip6erspan_newlink(struct net_device *dev, struct rtnl_newlink_params *params, struct netlink_ext_ack *extack) { + struct net *net = params->link_net ? : dev_net(dev); struct ip6_tnl *nt = netdev_priv(dev); struct nlattr **data = params->data; - struct net *src_net = params->net; struct nlattr **tb = params->tb; - struct net *net = dev_net(dev); struct ip6gre_net *ign; int err; @@ -2268,7 +2268,7 @@ static int ip6erspan_newlink(struct net_device *dev, return -EEXIST; } - err = ip6gre_newlink_common(src_net, dev, tb, data, extack); + err = ip6gre_newlink_common(net, dev, tb, data, extack); if (!err) { ip6erspan_tnl_link_config(nt, !tb[IFLA_MTU]); ip6erspan_tunnel_link_md(ign, nt); diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index 54b843d20870..2438dc627e02 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c @@ -253,8 +253,7 @@ static void ip6_dev_free(struct net_device *dev) static int ip6_tnl_create2(struct net_device *dev) { struct ip6_tnl *t = netdev_priv(dev); - struct net *net = dev_net(dev); - struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id); + struct ip6_tnl_net *ip6n = net_generic(t->net, ip6_tnl_net_id); int err; dev->rtnl_link_ops = &ip6_link_ops; @@ -1878,7 +1877,8 @@ ip6_tnl_dev_init_gen(struct net_device *dev) int t_hlen; t->dev = dev; - t->net = dev_net(dev); + if (!t->net) + t->net = dev_net(dev); ret = dst_cache_init(&t->dst_cache, GFP_KERNEL); if (ret) @@ -2008,13 +2008,16 @@ static int ip6_tnl_newlink(struct net_device *dev, { struct nlattr **data = params->data; struct nlattr **tb = params->tb; - struct net *net = dev_net(dev); - struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id); struct ip_tunnel_encap ipencap; + struct ip6_tnl_net *ip6n; struct ip6_tnl *nt, *t; + struct net *net; int err; + net = params->link_net ? : dev_net(dev); + ip6n = net_generic(net, ip6_tnl_net_id); nt = netdev_priv(dev); + nt->net = net; if (ip_tunnel_netlink_encap_parms(data, &ipencap)) { err = ip6_tnl_encap_setup(nt, &ipencap); diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c index 993f85aeb882..4aa1e7821951 100644 --- a/net/ipv6/ip6_vti.c +++ b/net/ipv6/ip6_vti.c @@ -177,8 +177,7 @@ vti6_tnl_unlink(struct vti6_net *ip6n, struct ip6_tnl *t) static int vti6_tnl_create2(struct net_device *dev) { struct ip6_tnl *t = netdev_priv(dev); - struct net *net = dev_net(dev); - struct vti6_net *ip6n = net_generic(net, vti6_net_id); + struct vti6_net *ip6n = net_generic(t->net, vti6_net_id); int err; dev->rtnl_link_ops = &vti6_link_ops; @@ -925,7 +924,8 @@ static inline int vti6_dev_init_gen(struct net_device *dev) struct ip6_tnl *t = netdev_priv(dev); t->dev = dev; - t->net = dev_net(dev); + if (!t->net) + t->net = dev_net(dev); netdev_hold(dev, &t->dev_tracker, GFP_KERNEL); netdev_lockdep_set_classes(dev); return 0; @@ -1002,13 +1002,15 @@ static int vti6_newlink(struct net_device *dev, struct netlink_ext_ack *extack) { struct nlattr **data = params->data; - struct net *net = dev_net(dev); struct ip6_tnl *nt; + struct net *net; + net = params->link_net ? : dev_net(dev); nt = netdev_priv(dev); vti6_netlink_parms(data, &nt->parms); nt->parms.proto = IPPROTO_IPV6; + nt->net = net; if (vti6_locate(net, &nt->parms, 0)) return -EEXIST; diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index e2bd52cabdee..e870271ed04a 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c @@ -201,8 +201,7 @@ static void ipip6_tunnel_clone_6rd(struct net_device *dev, struct sit_net *sitn) static int ipip6_tunnel_create(struct net_device *dev) { struct ip_tunnel *t = netdev_priv(dev); - struct net *net = dev_net(dev); - struct sit_net *sitn = net_generic(net, sit_net_id); + struct sit_net *sitn = net_generic(t->net, sit_net_id); int err; __dev_addr_set(dev, &t->parms.iph.saddr, 4); @@ -270,6 +269,7 @@ static struct ip_tunnel *ipip6_tunnel_locate(struct net *net, nt = netdev_priv(dev); nt->parms = *parms; + nt->net = net; if (ipip6_tunnel_create(dev) < 0) goto failed_free; @@ -1449,7 +1449,8 @@ static int ipip6_tunnel_init(struct net_device *dev) int err; tunnel->dev = dev; - tunnel->net = dev_net(dev); + if (!tunnel->net) + tunnel->net = dev_net(dev); strcpy(tunnel->parms.name, dev->name); ipip6_tunnel_bind_dev(dev); @@ -1556,15 +1557,17 @@ static int ipip6_newlink(struct net_device *dev, { struct nlattr **data = params->data; struct nlattr **tb = params->tb; - struct net *net = dev_net(dev); struct ip_tunnel *nt; struct ip_tunnel_encap ipencap; #ifdef CONFIG_IPV6_SIT_6RD struct ip_tunnel_6rd ip6rd; #endif + struct net *net; int err; + net = params->link_net ? : dev_net(dev); nt = netdev_priv(dev); + nt->net = net; if (ip_tunnel_netlink_encap_parms(data, &ipencap)) { err = ip_tunnel_encap_setup(nt, &ipencap); From patchwork Mon Feb 10 13:29:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiao Liang X-Patchwork-Id: 864040 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9AF1E22F167; Mon, 10 Feb 2025 13:31:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739194293; cv=none; b=BV2ghvOXKHJv4ZSo2YE/pgKh2grcJk0hrfSCjgjxw8baTrgeofX9H7X8DgwmgfNBiJakvsXbcp/HCgmnMYvPn/IS2SC0JxAZO8NU576/P8xrg1Izio3bRXAenIxYZWsYqq62NkFmCAINwRVt7ouOQO0Qmq4Fd/+qoMV/6Y89rMU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739194293; c=relaxed/simple; bh=FC90xSA6ZrsI4/RZzCluVx1dKwXoKKlt/hRW+0eki0I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=a2DjxhnK2vGCVG+RWWy9EUkHfrPHmXQUovA1xRVATILZARNxntH0TvDFYolaRiIyBhRvnhPsE3u4eSY6kvSwkeVQJKWzVTJ9U6Cu5cvcGl0pbic4VnJGNBBYHf7sxkElb4+oza7HgXPO9zQYrZGb9CJPz1gSZ5iPwbKrn5rMW1s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=URakFIDj; arc=none smtp.client-ip=209.85.214.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="URakFIDj" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-21f6022c2c3so35479935ad.0; Mon, 10 Feb 2025 05:31:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739194290; x=1739799090; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JIWpuyrhnho0qabV5ShFTJH6UcUC2BreOZhovgVT2xw=; b=URakFIDj76kxxhgcwZq9qEA6GLEUWaqu3EOQHSjSCQO9cm6iiRF2m7uV4AGsuTKqGK NsTCjEDtisWGMsm/I6P98rcHwAwU2F8i75gl4YL6p59rh3+MULyp2Zvjv8SlD6NW26ha LqZkLSd7Du82G5/yu0nOrWeVMMGEcsp1pumegdD+rFH2Xx7kSudo6hyjge6SJdXyt5Fe YicdP2xOgxfS+bIgxKI4cq6eUPAjpCSeOVpvwxcyNr1RSkbH2GLMXGUaOVKMqpXGu8C0 jT+UjRrTeeUdbcNMj28T9w0Rqw1WHwizmUQUyvFNbFNUizYNwyuEAnCxp5MOrJOAI/Xz gkzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739194290; x=1739799090; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JIWpuyrhnho0qabV5ShFTJH6UcUC2BreOZhovgVT2xw=; b=BSHE2pK3mCmmq0QRvVAJhBSPqB99PrpV+CE0te/272ADA7F3Wj0Ejq0Ji3tZenbc/a lgb2WuJWup+MMHeImBrNdelymi+e7xGvkUaANAJpNcQgdn+jECVJX6H/iK6XRWEQlCrN w4MbpFUMJ60t2OiHD/N74S2xRNPFKQaZzwHZI40+h/JVd7hiFJJfkP9PKdr9wzmaOaG5 5f1+5OZThachJlAG61UlbVxglpZ5JsGAM68UEoWm3OLcOm/25i4pEjxqRdouROk29QJP KVR5Eo773egfjII4FkYfRUMWtYMRsOpY44rsyBP67S+Pte4x5eBz9NYMiS+jTO74dsiS zrAQ== X-Forwarded-Encrypted: i=1; AJvYcCUd0JLDYTo88uq/y1ia4UD3DZvtkXW3mmtx8vzo62zS49dBGktbBjOC+kqVCoBkcqwPM9DvtcAOpoiH@vger.kernel.org, AJvYcCUkQw0E4wF3wMNPvL6iqSkNx2CpcxgwP4dART4DHb9IL5LgXzOTCH/qP7nuhogopqCWWBzM8SHmWsDy5QUc@vger.kernel.org, AJvYcCW0O4u+x+U2mYqmlsuIY1SifefJdb1ub1gChVGPC81jRp7LEW/SMrXO2WJI3GlmPgepMChT1YB8e+83@vger.kernel.org, AJvYcCW9CPYc/Dn9d8XDR74O75deMckknz1imwAOHd3SA6pxBC9WPCNU3gTl/2ZPzt0rGPRmEVKlK7GOatzWuw==@vger.kernel.org, AJvYcCWT1EQqJyUh8joi5xZKVygl6qdhItj1aEkqyMOsb+6Xy8xcncSfDYQkmnsCKnsmB+/Keto=@vger.kernel.org, AJvYcCWnrDjYlSjb8NK+XVmtpYIjCusRQEP7jG1LtxQGUElZyWItBzc7aPgsDLRTrN6Wla8BHts2/Uxg4Hbrlg==@vger.kernel.org, AJvYcCX4RBCxqxnYeG0r0ToJccglzzix4vWg4LqkmyDnSmFeHDLHS6X1FwihSuQk8AcQezPckhq5pcJriqJ9XlndCtk=@vger.kernel.org, AJvYcCXDuQPQyPBOQtGxVyGXW+FLQ9OA9DrOLoNi9RE8AUMHRS+/BOL0IVYIWAumWPsG6+ZKOnR8E1+2WprkLqE9U4EV@vger.kernel.org X-Gm-Message-State: AOJu0Yzp7XANwlljNuyksHY3/UcQskHJnWBphpzvXgwh78xSUFf0xzNc /AyudIXAcBzB6+lDwDMoNIDset7D9Prd+pqfmnja6P9Mr4kwiafU0zoWbd3SLbs= X-Gm-Gg: ASbGncsIBl9WOfuYhyyU2DQyxxYb92USSWpVXQ1+sNqWIfWfoYnMCLZ0pLfT/Igw55J 2UHDDlOT9OlsJukxvZCIGNfiksKr/ld/qryfyZW3OYFdZ0HV5BOfUiKnqYjct0bydgjqWrJdJJ6 X7LtwDFtYeL+k4z6u5aiWhf0YNSCzUAhBMVYe2kx+OfQDWWUyhVFhRP+hedcp+G+1gdpinHICRT Wgnyi/lxf71y/3qg6rtJ+jU2RRFdgsYYaMvvY1PeofZzym1zCFchlDQ66zvEUUyV6tfZZnI/g0v sejBvw== X-Google-Smtp-Source: AGHT+IELdC20KTjI7AEzrj7SsYJqrzU0cpR4bU0xmzWBFbAdZdANoU6evRtqtyIIyxHfa7kTbn7qJg== X-Received: by 2002:a17:902:f60f:b0:215:6c5f:d142 with SMTP id d9443c01a7336-21f4f7a257fmr230770855ad.20.1739194290046; Mon, 10 Feb 2025 05:31:30 -0800 (PST) Received: from ws.. ([103.167.140.11]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21f3653af3bsm78799445ad.57.2025.02.10.05.31.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 05:31:29 -0800 (PST) From: Xiao Liang To: netdev@vger.kernel.org, linux-kselftest@vger.kernel.org, Kuniyuki Iwashima , Jakub Kicinski Cc: "David S. Miller" , David Ahern , Eric Dumazet , Paolo Abeni , Andrew Lunn , Simon Horman , Shuah Khan , Donald Hunter , Alexander Aring , Stefan Schmidt , Miquel Raynal , Steffen Klassert , Herbert Xu , linux-rdma@vger.kernel.org, linux-can@vger.kernel.org, osmocom-net-gprs@lists.osmocom.org, bpf@vger.kernel.org, linux-ppp@vger.kernel.org, wireguard@lists.zx2c4.com, linux-wireless@vger.kernel.org, b.a.t.m.a.n@lists.open-mesh.org, bridge@lists.linux.dev, linux-wpan@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v9 08/11] rtnetlink: Remove "net" from newlink params Date: Mon, 10 Feb 2025 21:29:59 +0800 Message-ID: <20250210133002.883422-9-shaw.leon@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210133002.883422-1-shaw.leon@gmail.com> References: <20250210133002.883422-1-shaw.leon@gmail.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Now that devices have been converted to use the specific netns instead of ambiguous "net", let's remove it from newlink parameters. Signed-off-by: Xiao Liang --- include/net/rtnetlink.h | 2 -- net/core/rtnetlink.c | 6 ------ 2 files changed, 8 deletions(-) diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h index 00c086ca0c11..dd51240431b8 100644 --- a/include/net/rtnetlink.h +++ b/include/net/rtnetlink.h @@ -72,7 +72,6 @@ static inline int rtnl_msg_family(const struct nlmsghdr *nlh) /** * struct rtnl_newlink_params - parameters of rtnl_link_ops::newlink() * - * @net: Netns of interest * @src_net: Source netns of rtnetlink socket * @link_net: Link netns by IFLA_LINK_NETNSID, NULL if not specified * @peer_net: Peer netns @@ -80,7 +79,6 @@ static inline int rtnl_msg_family(const struct nlmsghdr *nlh) * @data: IFLA_INFO_DATA attributes */ struct rtnl_newlink_params { - struct net *net; struct net *src_net; struct net *link_net; struct net *peer_net; diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 7e98f3cd102b..e9af0775fa6b 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -3797,12 +3797,6 @@ static int rtnl_newlink_create(struct sk_buff *skb, struct ifinfomsg *ifm, dev->ifindex = ifm->ifi_index; - params.net = params.src_net; - if (link_net) - params.net = link_net; - if (peer_net) - params.net = peer_net; - if (ops->newlink) err = ops->newlink(dev, ¶ms, extack); else From patchwork Mon Feb 10 13:30:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiao Liang X-Patchwork-Id: 864039 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4B00722F391; Mon, 10 Feb 2025 13:31:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739194310; cv=none; b=sz/4T2UPqOPh47SiChlXlZrqERJYkJcc4+DBlsSZeDS7gVde4k+QNFjIOFVAy8scUvNDf8QnOj7PGRRMwJkDy6S7oXMOuU/iD9Hr2pqPc5W/L9l0Dl4quTb2BvXOF1/MV2qPTEmqtrBCdJjYcoyV3KTbEUrpAdYDFw/+SLtAoGw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739194310; c=relaxed/simple; bh=lzUgC/O1T6CC8pluTdthNoUVgnv/C+cqDItFQE9UsXM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fsOSlXvvSBu4q7+AzzBtQFiy3N2VGjyrBfgXyKHLDqLWhykMtk1ih6Npz93qML2WioOuLTX+Lwsd/k3tpxrQ7a5q/zAdNO10GYuzVFKXOl995o5HsgcP1/AoFYtFReJTIFvZxfxd9yky6JFlfWdMZWTa5kBt7PziNBaUCvo0rOQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=d78z8dH+; arc=none smtp.client-ip=209.85.216.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="d78z8dH+" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-2f83a8afcbbso6795402a91.1; Mon, 10 Feb 2025 05:31:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739194308; x=1739799108; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8ke0PFn5ns0UuVrqND5gWG1VnmGxHj7kcjuhyXJXO0M=; b=d78z8dH+1sOy8vwvSPL6y3tMYSovBWOg948D9tDGttOdVeACxMyz7v9ldR7VsD4O0X R5jtNJiUX1vdCq0qts7Ij5SOk1xQcSZYWCOcD2nIFgxHnSLRmF1fI31Cvng5JtrHLImO QozSaZZ136bd6o3G2eF2SK6IPmqXgt9tilesZtUlJW7aPJkYHzSaYKMI/S1XU2tBarZC IXZsYZdvza9YTn6h6McrccIWZYcjed2n85lzyo2SvTDQGjws5BZFGYq57AVUIxHZ799y kHfDUksoBPw3xiybGqkvfpENsS5d0u9f0dJYlMn8R+ajvZzvTEdeOftlITFKOSBnRuqE 7TTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739194308; x=1739799108; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8ke0PFn5ns0UuVrqND5gWG1VnmGxHj7kcjuhyXJXO0M=; b=HJ3PbUfL9n0KE4l4iqhvZg+1lpvvXO/ENu9VzDcCn7CLDtZieDoLKOoE75aFBWT3td CdXN6Yl3DS9k6F6wrwhXem5TbGTFnCJ41hIWZ54Aaobjw5Xzu7XDGgc2kPgb4n9m3Vh/ Zo8CmHx2uMl2IBOg/SKVoLtUcX9YcMSbM5xRBNXSUqz0E7yQAs79+zLVd+lJne4Bg2AW HqoPFtL6fWwVvpIM72sqR34z9R38rQNNjFkkoSaDZwICGBCtnblS8KDa+RgY+WsOZT6I va/dV8s9Eb+l9dyeRKPQLi9E7bLlDH5+4If51ZUBTNuz2osPwrPbZRKySIC0Ax/IkbdN dA/w== X-Forwarded-Encrypted: i=1; AJvYcCUVzXatitO0nuE+pvXRs/KGIFjIXYMEFFdwmK2x2CuNXYWjkV85aO+xiDw0btB9/GQ6g8A8CrfpsH6hHjAk@vger.kernel.org, AJvYcCUlb2Pvrh6xunSaSx5gEo1finojPqjvgMBQR7JHCBbid9k2/7BmL7PE0s8MGSj00ojI1A1FSSnAWlY6jOFkmKq8@vger.kernel.org, AJvYcCUo9bWK0bZcfbsphunlY83j5+gWzcthetdp0JhetsHrgD6qhtTrUaDnAho1f4cbCYpHFj6U1d/tmNUKFA==@vger.kernel.org, AJvYcCVyZk1q8x47P0LgRlQSrzkC6a0beQdOR8aeo4EQSERRWP88yPkY6p6B+SKSevC9K5Edl7Z8a+/M53u9vf5QJiE=@vger.kernel.org, AJvYcCWnS66054xFKWdOTvjJEw61LHGNcF4UwSu+thWsePgy/khxJ/TF2vhxANCVTwUuiOLRaJR705hPhvjg@vger.kernel.org, AJvYcCX9fsL9zVWeVxG6l3SafzOTJe2vy+yXno2jCHbGKWJ1XuG4mYMVi9oiXgkqqZCzEJJugbkApr2ge+H9@vger.kernel.org, AJvYcCXXqq0FU/0lJ0YEDbzGuCaA61aMXGkK/rAex9TyfXCDpw3989DIYkiFu8gTYFixa4IPXpM=@vger.kernel.org, AJvYcCXt9rrfw7HQLWBzOCoI5F+sopXSI4n2L1458fTGBN5P7kpAjWTBrYXkSYR+NlLHUuSna69CQj+f08dMAg==@vger.kernel.org X-Gm-Message-State: AOJu0YzQ2RM31O6z5BRBpx5MChYPkh3PzxyO2+GqteQOW1/fudyuTgS5 X9UN5LrjaTJZuoLa8+YvqV8RsoVcVAkWLVWZog2L/PALoFulicreaf7wfu7nyag= X-Gm-Gg: ASbGnctOmvimp6dL98JFfXSLCzndzd3EJdzAWGDcTP4Gqk4mE0B9ZEq+QFgV4u1USB2 tVi78vSfxp+UE2MJ9Cw1+FzSq5r67yym0IGJsDFY2nWFjaeMTxl6pgE0MPFVrHycTihRUJNV6pN ksO3L148vT25ish6/4uvWh2lOpMZ2yGKBZ9Z7BoExLuGDr+lFvZZ73Q2QDcGuS6tYxMJSVxBQv5 Kd9jH0lup5qpFYzvIfFg+3CmVjgFHPOwY+zqFCCNBpJ2f1dpfYqc74LSJMez8w8rtGn8i/q8OiW Y1kqRg== X-Google-Smtp-Source: AGHT+IFPiBsnnOAy2e8DGACZaeMc4ZZCgfCsAVv3/+u7QA91zVdRjIX/zkP0E7/3XIVhHqlMh6JYtA== X-Received: by 2002:a17:90b:350e:b0:2ef:ad48:7175 with SMTP id 98e67ed59e1d1-2f9ffb7ba83mr30255082a91.15.1739194308152; Mon, 10 Feb 2025 05:31:48 -0800 (PST) Received: from ws.. ([103.167.140.11]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21f3653af3bsm78799445ad.57.2025.02.10.05.31.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 05:31:47 -0800 (PST) From: Xiao Liang To: netdev@vger.kernel.org, linux-kselftest@vger.kernel.org, Kuniyuki Iwashima , Jakub Kicinski Cc: "David S. Miller" , David Ahern , Eric Dumazet , Paolo Abeni , Andrew Lunn , Simon Horman , Shuah Khan , Donald Hunter , Alexander Aring , Stefan Schmidt , Miquel Raynal , Steffen Klassert , Herbert Xu , linux-rdma@vger.kernel.org, linux-can@vger.kernel.org, osmocom-net-gprs@lists.osmocom.org, bpf@vger.kernel.org, linux-ppp@vger.kernel.org, wireguard@lists.zx2c4.com, linux-wireless@vger.kernel.org, b.a.t.m.a.n@lists.open-mesh.org, bridge@lists.linux.dev, linux-wpan@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v9 10/11] selftests: net: Add python context manager for netns entering Date: Mon, 10 Feb 2025 21:30:01 +0800 Message-ID: <20250210133002.883422-11-shaw.leon@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210133002.883422-1-shaw.leon@gmail.com> References: <20250210133002.883422-1-shaw.leon@gmail.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Change netns of current thread and switch back on context exit. For example: with NetNSEnter("ns1"): ip("link add dummy0 type dummy") The command be executed in netns "ns1". Signed-off-by: Xiao Liang --- tools/testing/selftests/net/lib/py/__init__.py | 2 +- tools/testing/selftests/net/lib/py/netns.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/lib/py/__init__.py b/tools/testing/selftests/net/lib/py/__init__.py index 54d8f5eba810..e2d6c7b63019 100644 --- a/tools/testing/selftests/net/lib/py/__init__.py +++ b/tools/testing/selftests/net/lib/py/__init__.py @@ -2,7 +2,7 @@ from .consts import KSRC from .ksft import * -from .netns import NetNS +from .netns import NetNS, NetNSEnter from .nsim import * from .utils import * from .ynl import NlError, YnlFamily, EthtoolFamily, NetdevFamily, RtnlFamily diff --git a/tools/testing/selftests/net/lib/py/netns.py b/tools/testing/selftests/net/lib/py/netns.py index ecff85f9074f..8e9317044eef 100644 --- a/tools/testing/selftests/net/lib/py/netns.py +++ b/tools/testing/selftests/net/lib/py/netns.py @@ -1,9 +1,12 @@ # SPDX-License-Identifier: GPL-2.0 from .utils import ip +import ctypes import random import string +libc = ctypes.cdll.LoadLibrary('libc.so.6') + class NetNS: def __init__(self, name=None): @@ -29,3 +32,18 @@ class NetNS: def __repr__(self): return f"NetNS({self.name})" + + +class NetNSEnter: + def __init__(self, ns_name): + self.ns_path = f"/run/netns/{ns_name}" + + def __enter__(self): + self.saved = open("/proc/thread-self/ns/net") + with open(self.ns_path) as ns_file: + libc.setns(ns_file.fileno(), 0) + return self + + def __exit__(self, exc_type, exc_value, traceback): + libc.setns(self.saved.fileno(), 0) + self.saved.close()