mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
net: ethtool: don't take rtnl_lock for global string dump
ETHTOOL_MSG_STRSET_GET is the only op which sets allow_nodev_do. When no device is provided it dumps static tables, there's no need to hold rtnl_lock for this. Not taking rtnl_lock is a minor win in itself so I think this patch stands on its own merits. Later on it will be useful to do locking only in paths which have access to a netdev, so that we can decide which locks to take per-netdev. Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev> Link: https://patch.msgid.link/20260527162522.3344231-1-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
e03f0b53b4
commit
f635b0c912
|
|
@ -526,13 +526,15 @@ static int ethnl_default_doit(struct sk_buff *skb, struct genl_info *info)
|
|||
goto err_free;
|
||||
ethnl_init_reply_data(reply_data, ops, req_info->dev);
|
||||
|
||||
rtnl_lock();
|
||||
if (req_info->dev)
|
||||
if (req_info->dev) {
|
||||
rtnl_lock();
|
||||
netdev_lock_ops(req_info->dev);
|
||||
}
|
||||
ret = ops->prepare_data(req_info, reply_data, info);
|
||||
if (req_info->dev)
|
||||
if (req_info->dev) {
|
||||
netdev_unlock_ops(req_info->dev);
|
||||
rtnl_unlock();
|
||||
rtnl_unlock();
|
||||
}
|
||||
if (ret < 0)
|
||||
goto err_dev;
|
||||
ret = ops->reply_size(req_info, reply_data);
|
||||
|
|
|
|||
|
|
@ -333,7 +333,9 @@ int ethnl_sock_priv_set(struct sk_buff *skb, struct net *net, u32 portid,
|
|||
* @hdr_attr: attribute type for request header
|
||||
* @req_info_size: size of request info
|
||||
* @reply_data_size: size of reply data
|
||||
* @allow_nodev_do: allow non-dump request with no device identification
|
||||
* @allow_nodev_do:
|
||||
* Allow non-dump request with no device identification.
|
||||
* Note that locks (rtnl_lock etc.) are only taken if device is set.
|
||||
* @set_ntf_cmd: notification to generate on changes (SET)
|
||||
* @parse_request:
|
||||
* Parse request except common header (struct ethnl_req_info). Common
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user