From: Kees Cook <kees@kernel.org>
To: Kuniyuki Iwashima <kuniyu@amazon.com>
Cc: Kees Cook <kees@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Simon Horman <horms@kernel.org>,
Andrew Lunn <andrew+netdev@lunn.ch>,
Stanislav Fomichev <sdf@fomichev.me>,
Cosmin Ratiu <cratiu@nvidia.com>, Lei Yang <leiyang@redhat.com>,
Ido Schimmel <idosch@nvidia.com>,
netdev@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
Sagi Grimberg <sagi@grimberg.me>,
Chaitanya Kulkarni <kch@nvidia.com>,
"Martin K. Petersen" <martin.petersen@oracle.com>,
Mike Christie <michael.christie@oracle.com>,
Max Gurtovoy <mgurtovoy@nvidia.com>,
Maurizio Lombardi <mlombard@redhat.com>,
Dmitry Bogdanov <d.bogdanov@yadro.com>,
Mingzhe Zou <mingzhe.zou@easystack.cn>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
"Dr. David Alan Gilbert" <linux@treblig.org>,
Samuel Mendoza-Jonas <sam@mendozajonas.com>,
Paul Fertser <fercerpav@gmail.com>,
Alexander Aring <alex.aring@gmail.com>,
Stefan Schmidt <stefan@datenfreihafen.org>,
Miquel Raynal <miquel.raynal@bootlin.com>,
Hayes Wang <hayeswang@realtek.com>,
Douglas Anderson <dianders@chromium.org>,
Grant Grundler <grundler@chromium.org>,
Jay Vosburgh <jv@jvosburgh.net>,
"K. Y. Srinivasan" <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
Jiri Pirko <jiri@resnulli.us>, Eric Biggers <ebiggers@google.com>,
Milan Broz <gmazyland@gmail.com>, Philipp Hahn <phahn-oss@avm.de>,
Ard Biesheuvel <ardb@kernel.org>,
Al Viro <viro@zeniv.linux.org.uk>,
Ahmed Zaki <ahmed.zaki@intel.com>,
Alexander Lobakin <aleksander.lobakin@intel.com>,
Xiao Liang <shaw.leon@gmail.com>,
linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org,
linux-scsi@vger.kernel.org, target-devel@vger.kernel.org,
linux-wpan@vger.kernel.org, linux-usb@vger.kernel.org,
linux-hyperv@vger.kernel.org, linux-hardening@vger.kernel.org
Subject: [PATCH 2/7] net: core: Switch netif_set_mac_address() to struct sockaddr_storage
Date: Tue, 20 May 2025 15:31:01 -0700 [thread overview]
Message-ID: <20250520223108.2672023-2-kees@kernel.org> (raw)
In-Reply-To: <20250520222452.work.063-kees@kernel.org>
In order to avoid passing around struct sockaddr that has a size the
compiler cannot reason about (nor track at runtime), convert
netif_set_mac_address() to take struct sockaddr_storage. This is just a
cast conversion, so there is are no binary changes. Following patches
will make actual allocation changes.
Signed-off-by: Kees Cook <kees@kernel.org>
---
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Simon Horman <horms@kernel.org>
Cc: Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Stanislav Fomichev <sdf@fomichev.me>
Cc: Cosmin Ratiu <cratiu@nvidia.com>
Cc: Lei Yang <leiyang@redhat.com>
Cc: Kuniyuki Iwashima <kuniyu@amazon.com>
Cc: Ido Schimmel <idosch@nvidia.com>
Cc: <netdev@vger.kernel.org>
---
include/linux/netdevice.h | 2 +-
net/core/dev.c | 10 +++++-----
net/core/dev_api.c | 4 ++--
net/core/rtnetlink.c | 2 +-
4 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index ea9d335de130..47200a394a02 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -4212,7 +4212,7 @@ int netif_set_mtu(struct net_device *dev, int new_mtu);
int dev_set_mtu(struct net_device *, int);
int dev_pre_changeaddr_notify(struct net_device *dev, const char *addr,
struct netlink_ext_ack *extack);
-int netif_set_mac_address(struct net_device *dev, struct sockaddr *sa,
+int netif_set_mac_address(struct net_device *dev, struct sockaddr_storage *ss,
struct netlink_ext_ack *extack);
int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
struct netlink_ext_ack *extack);
diff --git a/net/core/dev.c b/net/core/dev.c
index fccf2167b235..f8c8aad7df2e 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -9655,7 +9655,7 @@ int dev_pre_changeaddr_notify(struct net_device *dev, const char *addr,
}
EXPORT_SYMBOL(dev_pre_changeaddr_notify);
-int netif_set_mac_address(struct net_device *dev, struct sockaddr *sa,
+int netif_set_mac_address(struct net_device *dev, struct sockaddr_storage *ss,
struct netlink_ext_ack *extack)
{
const struct net_device_ops *ops = dev->netdev_ops;
@@ -9663,15 +9663,15 @@ int netif_set_mac_address(struct net_device *dev, struct sockaddr *sa,
if (!ops->ndo_set_mac_address)
return -EOPNOTSUPP;
- if (sa->sa_family != dev->type)
+ if (ss->ss_family != dev->type)
return -EINVAL;
if (!netif_device_present(dev))
return -ENODEV;
- err = dev_pre_changeaddr_notify(dev, sa->sa_data, extack);
+ err = dev_pre_changeaddr_notify(dev, ss->__data, extack);
if (err)
return err;
- if (memcmp(dev->dev_addr, sa->sa_data, dev->addr_len)) {
- err = ops->ndo_set_mac_address(dev, sa);
+ if (memcmp(dev->dev_addr, ss->__data, dev->addr_len)) {
+ err = ops->ndo_set_mac_address(dev, ss);
if (err)
return err;
}
diff --git a/net/core/dev_api.c b/net/core/dev_api.c
index f9a160ab596f..b5f293e637d9 100644
--- a/net/core/dev_api.c
+++ b/net/core/dev_api.c
@@ -91,7 +91,7 @@ int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
down_write(&dev_addr_sem);
netdev_lock_ops(dev);
- ret = netif_set_mac_address(dev, sa, extack);
+ ret = netif_set_mac_address(dev, (struct sockaddr_storage *)sa, extack);
netdev_unlock_ops(dev);
up_write(&dev_addr_sem);
@@ -332,7 +332,7 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
int ret;
netdev_lock_ops(dev);
- ret = netif_set_mac_address(dev, sa, extack);
+ ret = netif_set_mac_address(dev, (struct sockaddr_storage *)sa, extack);
netdev_unlock_ops(dev);
return ret;
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 8a914b37ef6e..9743f1c2ae3c 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -3100,7 +3100,7 @@ static int do_setlink(const struct sk_buff *skb, struct net_device *dev,
memcpy(sa->sa_data, nla_data(tb[IFLA_ADDRESS]),
dev->addr_len);
- err = netif_set_mac_address(dev, sa, extack);
+ err = netif_set_mac_address(dev, (struct sockaddr_storage *)sa, extack);
kfree(sa);
if (err) {
up_write(&dev_addr_sem);
--
2.34.1
next prev parent reply other threads:[~2025-05-20 22:31 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-20 22:30 [PATCH 0/7] net: Convert dev_set_mac_address() to struct sockaddr_storage Kees Cook
2025-05-20 22:31 ` [PATCH 1/7] net: core: Convert inet_addr_is_any() to sockaddr_storage Kees Cook
2025-05-21 0:04 ` Kuniyuki Iwashima
2025-05-21 1:26 ` Martin K. Petersen
2025-05-20 22:31 ` Kees Cook [this message]
2025-05-20 22:47 ` [PATCH 2/7] net: core: Switch netif_set_mac_address() to struct sockaddr_storage Gustavo A. R. Silva
2025-05-20 22:31 ` [PATCH 3/7] net/ncsi: Use struct sockaddr_storage for pending_mac Kees Cook
2025-05-20 22:48 ` Gustavo A. R. Silva
2025-05-20 22:31 ` [PATCH 4/7] ieee802154: Use struct sockaddr_storage with dev_set_mac_address() Kees Cook
2025-05-20 22:49 ` Gustavo A. R. Silva
2025-05-20 22:31 ` [PATCH 5/7] net: usb: r8152: Convert to use struct sockaddr_storage internally Kees Cook
2025-05-20 22:49 ` Gustavo A. R. Silva
2025-05-20 22:31 ` [PATCH 6/7] net: core: Convert dev_set_mac_address() to struct sockaddr_storage Kees Cook
2025-05-20 22:50 ` Gustavo A. R. Silva
2025-05-21 13:42 ` kernel test robot
2025-05-20 22:31 ` [PATCH 7/7] rtnetlink: do_setlink: Use " Kees Cook
2025-05-20 22:50 ` Gustavo A. R. Silva
2025-05-21 0:19 ` [PATCH 0/7] net: Convert dev_set_mac_address() to " Kuniyuki Iwashima
2025-05-21 0:42 ` Kees Cook
2025-05-21 3:09 ` Jakub Kicinski
2025-05-21 5:18 ` Kees Cook
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250520223108.2672023-2-kees@kernel.org \
--to=kees@kernel.org \
--cc=ahmed.zaki@intel.com \
--cc=aleksander.lobakin@intel.com \
--cc=alex.aring@gmail.com \
--cc=andrew+netdev@lunn.ch \
--cc=ardb@kernel.org \
--cc=christophe.leroy@csgroup.eu \
--cc=cratiu@nvidia.com \
--cc=d.bogdanov@yadro.com \
--cc=davem@davemloft.net \
--cc=decui@microsoft.com \
--cc=dianders@chromium.org \
--cc=ebiggers@google.com \
--cc=edumazet@google.com \
--cc=fercerpav@gmail.com \
--cc=gmazyland@gmail.com \
--cc=grundler@chromium.org \
--cc=haiyangz@microsoft.com \
--cc=hayeswang@realtek.com \
--cc=hch@lst.de \
--cc=horms@kernel.org \
--cc=idosch@nvidia.com \
--cc=jiri@resnulli.us \
--cc=jv@jvosburgh.net \
--cc=kch@nvidia.com \
--cc=kuba@kernel.org \
--cc=kuniyu@amazon.com \
--cc=kys@microsoft.com \
--cc=leiyang@redhat.com \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux-wpan@vger.kernel.org \
--cc=linux@treblig.org \
--cc=martin.petersen@oracle.com \
--cc=mgurtovoy@nvidia.com \
--cc=michael.christie@oracle.com \
--cc=mingzhe.zou@easystack.cn \
--cc=miquel.raynal@bootlin.com \
--cc=mlombard@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=phahn-oss@avm.de \
--cc=sagi@grimberg.me \
--cc=sam@mendozajonas.com \
--cc=sdf@fomichev.me \
--cc=shaw.leon@gmail.com \
--cc=stefan@datenfreihafen.org \
--cc=target-devel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
--cc=wei.liu@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.