diff options
Diffstat (limited to 'net/core/rtnetlink.c')
| -rw-r--r-- | net/core/rtnetlink.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 59eda6952bc9..9e9f1419be60 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
| @@ -4221,6 +4221,12 @@ static int rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, | |||
| 4221 | return err; | 4221 | return err; |
| 4222 | } | 4222 | } |
| 4223 | 4223 | ||
| 4224 | doit = READ_ONCE(handlers[type].doit); | ||
| 4225 | if (!doit) { | ||
| 4226 | family = PF_UNSPEC; | ||
| 4227 | handlers = rcu_dereference(rtnl_msg_handlers[family]); | ||
| 4228 | } | ||
| 4229 | |||
| 4224 | flags = READ_ONCE(handlers[type].flags); | 4230 | flags = READ_ONCE(handlers[type].flags); |
| 4225 | if (flags & RTNL_FLAG_DOIT_UNLOCKED) { | 4231 | if (flags & RTNL_FLAG_DOIT_UNLOCKED) { |
| 4226 | refcount_inc(&rtnl_msg_handlers_ref[family]); | 4232 | refcount_inc(&rtnl_msg_handlers_ref[family]); |
