From: Florian Westphal <fw@strlen•de>
To: <netdev@vger•kernel.org>
Cc: Florian Westphal <fw@strlen•de>
Subject: [PATCH net-next v2 3/6] rtnetlink: add helper to dump qdisc name
Date: Fri, 22 Sep 2017 08:10:05 +0200 [thread overview]
Message-ID: <20170922061008.14723-4-fw@strlen.de> (raw)
In-Reply-To: <20170922061008.14723-1-fw@strlen.de>
We can use rcu here to make this safe even if we would not hold rtnl:
qdisc_destroy uses call_rcu to free the Qdisc struct.
Signed-off-by: Florian Westphal <fw@strlen•de>
---
net/core/rtnetlink.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index c801212ee40e..ad3f27da37a8 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -1332,6 +1332,19 @@ static int nla_put_iflink(struct sk_buff *skb, const struct net_device *dev)
return nla_put_u32(skb, IFLA_LINK, ifindex);
}
+static int nla_put_qdisc(struct sk_buff *skb, struct net_device *dev)
+{
+ struct Qdisc *q;
+ int ret = 0;
+
+ rcu_read_lock();
+ q = READ_ONCE(dev->qdisc);
+ if (q)
+ ret = nla_put_string(skb, IFLA_QDISC, q->ops->id);
+ rcu_read_unlock();
+ return ret;
+}
+
static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,
int type, u32 pid, u32 seq, u32 change,
unsigned int flags, u32 ext_filter_mask,
@@ -1372,8 +1385,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,
nla_put_iflink(skb, dev) ||
put_master_ifindex(skb, dev) ||
nla_put_u8(skb, IFLA_CARRIER, netif_carrier_ok(dev)) ||
- (dev->qdisc &&
- nla_put_string(skb, IFLA_QDISC, dev->qdisc->ops->id)) ||
+ nla_put_qdisc(skb, dev) ||
(dev->ifalias &&
nla_put_string(skb, IFLA_IFALIAS, dev->ifalias)) ||
nla_put_u32(skb, IFLA_CARRIER_CHANGES,
--
2.13.5
next prev parent reply other threads:[~2017-09-22 6:10 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-22 6:10 [PATCH net-next v2 0/6] rtnetlink: preparation patches for further rtnl lock pushdown/removal Florian Westphal
2017-09-22 6:10 ` [PATCH net-next v2 1/6] selftests: rtnetlink.sh: add rudimentary vrf test Florian Westphal
2017-09-23 16:59 ` David Ahern
2017-09-23 17:07 ` David Ahern
2017-09-22 6:10 ` [PATCH net-next v2 2/6] rtnetlink: add helper to put master ifindex Florian Westphal
2017-09-23 17:01 ` David Ahern
2017-09-22 6:10 ` Florian Westphal [this message]
2017-09-23 17:03 ` [PATCH net-next v2 3/6] rtnetlink: add helper to dump qdisc name David Ahern
2017-09-23 17:31 ` Eric Dumazet
2017-09-23 18:38 ` Florian Westphal
2017-09-22 6:10 ` [PATCH net-next v2 4/6] rtnetlink: add helper to dump ifalias Florian Westphal
2017-09-23 17:14 ` David Ahern
2017-09-22 6:10 ` [PATCH net-next v2 5/6] rtnetlink: add helpers to dump vf and netnsid information Florian Westphal
2017-09-23 17:12 ` David Ahern
2017-09-22 6:10 ` [PATCH net-next v2 6/6] rtnetlink: rtnl_have_link_slave_info doesn't need rtnl Florian Westphal
2017-09-23 17:17 ` David Ahern
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=20170922061008.14723-4-fw@strlen.de \
--to=fw@strlen$(echo .)de \
--cc=netdev@vger$(echo .)kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox