ieee802154: Use struct sockaddr_storage with dev_set_mac_address()
authorKees Cook <kees@kernel.org>
Wed, 21 May 2025 20:46:12 +0000 (13:46 -0700)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 27 May 2025 06:25:43 +0000 (08:25 +0200)
Switch to struct sockaddr_storage for calling dev_set_mac_address(). Add
a temporary cast to struct sockaddr, which will be removed in a
subsequent patch.

Acked-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Kees Cook <kees@kernel.org>
Link: https://patch.msgid.link/20250521204619.2301870-4-kees@kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/ieee802154/nl-phy.c

index 359249ab77bf3d0f14c666dde77376de580d3e05..ee2b190e8e0d261e10493da6ab1a4c47c8a295ae 100644 (file)
@@ -224,17 +224,17 @@ int ieee802154_add_iface(struct sk_buff *skb, struct genl_info *info)
        dev_hold(dev);
 
        if (info->attrs[IEEE802154_ATTR_HW_ADDR]) {
-               struct sockaddr addr;
+               struct sockaddr_storage addr;
 
-               addr.sa_family = ARPHRD_IEEE802154;
-               nla_memcpy(&addr.sa_data, info->attrs[IEEE802154_ATTR_HW_ADDR],
+               addr.ss_family = ARPHRD_IEEE802154;
+               nla_memcpy(&addr.__data, info->attrs[IEEE802154_ATTR_HW_ADDR],
                           IEEE802154_ADDR_LEN);
 
                /* strangely enough, some callbacks (inetdev_event) from
                 * dev_set_mac_address require RTNL_LOCK
                 */
                rtnl_lock();
-               rc = dev_set_mac_address(dev, &addr, NULL);
+               rc = dev_set_mac_address(dev, (struct sockaddr *)&addr, NULL);
                rtnl_unlock();
                if (rc)
                        goto dev_unregister;