mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
Merge branch 'devlink-port-attribute-fixes'
Parav Pandit says:
====================
devlink port attribute fixes
This patchset contains 2 small fixes for devlink port attributes.
Patch summary:
Patch-1 synchronize the devlink port attribute reader
with net namespace change operation
Patch-2 Ensure to return devlink port's netdevice attributes
when netdev and devlink instance belong to same net namespace
====================
Link: https://lore.kernel.org/r/20201125091620.6781-1-parav@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -772,6 +772,8 @@ static int devlink_nl_port_fill(struct sk_buff *msg, struct devlink *devlink,
|
|||||||
if (nla_put_u32(msg, DEVLINK_ATTR_PORT_INDEX, devlink_port->index))
|
if (nla_put_u32(msg, DEVLINK_ATTR_PORT_INDEX, devlink_port->index))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
|
/* Hold rtnl lock while accessing port's netdev attributes. */
|
||||||
|
rtnl_lock();
|
||||||
spin_lock_bh(&devlink_port->type_lock);
|
spin_lock_bh(&devlink_port->type_lock);
|
||||||
if (nla_put_u16(msg, DEVLINK_ATTR_PORT_TYPE, devlink_port->type))
|
if (nla_put_u16(msg, DEVLINK_ATTR_PORT_TYPE, devlink_port->type))
|
||||||
goto nla_put_failure_type_locked;
|
goto nla_put_failure_type_locked;
|
||||||
@@ -780,9 +782,10 @@ static int devlink_nl_port_fill(struct sk_buff *msg, struct devlink *devlink,
|
|||||||
devlink_port->desired_type))
|
devlink_port->desired_type))
|
||||||
goto nla_put_failure_type_locked;
|
goto nla_put_failure_type_locked;
|
||||||
if (devlink_port->type == DEVLINK_PORT_TYPE_ETH) {
|
if (devlink_port->type == DEVLINK_PORT_TYPE_ETH) {
|
||||||
|
struct net *net = devlink_net(devlink_port->devlink);
|
||||||
struct net_device *netdev = devlink_port->type_dev;
|
struct net_device *netdev = devlink_port->type_dev;
|
||||||
|
|
||||||
if (netdev &&
|
if (netdev && net_eq(net, dev_net(netdev)) &&
|
||||||
(nla_put_u32(msg, DEVLINK_ATTR_PORT_NETDEV_IFINDEX,
|
(nla_put_u32(msg, DEVLINK_ATTR_PORT_NETDEV_IFINDEX,
|
||||||
netdev->ifindex) ||
|
netdev->ifindex) ||
|
||||||
nla_put_string(msg, DEVLINK_ATTR_PORT_NETDEV_NAME,
|
nla_put_string(msg, DEVLINK_ATTR_PORT_NETDEV_NAME,
|
||||||
@@ -798,6 +801,7 @@ static int devlink_nl_port_fill(struct sk_buff *msg, struct devlink *devlink,
|
|||||||
goto nla_put_failure_type_locked;
|
goto nla_put_failure_type_locked;
|
||||||
}
|
}
|
||||||
spin_unlock_bh(&devlink_port->type_lock);
|
spin_unlock_bh(&devlink_port->type_lock);
|
||||||
|
rtnl_unlock();
|
||||||
if (devlink_nl_port_attrs_put(msg, devlink_port))
|
if (devlink_nl_port_attrs_put(msg, devlink_port))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
if (devlink_nl_port_function_attrs_put(msg, devlink_port, extack))
|
if (devlink_nl_port_function_attrs_put(msg, devlink_port, extack))
|
||||||
@@ -808,6 +812,7 @@ static int devlink_nl_port_fill(struct sk_buff *msg, struct devlink *devlink,
|
|||||||
|
|
||||||
nla_put_failure_type_locked:
|
nla_put_failure_type_locked:
|
||||||
spin_unlock_bh(&devlink_port->type_lock);
|
spin_unlock_bh(&devlink_port->type_lock);
|
||||||
|
rtnl_unlock();
|
||||||
nla_put_failure:
|
nla_put_failure:
|
||||||
genlmsg_cancel(msg, hdr);
|
genlmsg_cancel(msg, hdr);
|
||||||
return -EMSGSIZE;
|
return -EMSGSIZE;
|
||||||
|
|||||||
Reference in New Issue
Block a user