diff options
author | Ying Xue <ying.xue@windriver.com> | 2018-02-14 00:38:00 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-02-14 14:46:32 -0500 |
commit | 45cf7edfbc07b2208d7b4a79d4a36aeddf16aefd (patch) | |
tree | 7fe61491539964bf0c4e230c0a2512de34000ad0 /net/tipc | |
parent | d59d8b77abf4308e9c6809298341e275eac38404 (diff) |
tipc: Introduce __tipc_nl_bearer_enable
Introduce __tipc_nl_bearer_enable() which doesn't hold RTNL lock.
Signed-off-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc')
-rw-r--r-- | net/tipc/bearer.c | 17 | ||||
-rw-r--r-- | net/tipc/bearer.h | 1 |
2 files changed, 11 insertions, 7 deletions
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c index 61b6625f93a4..faf8fa033740 100644 --- a/net/tipc/bearer.c +++ b/net/tipc/bearer.c | |||
@@ -855,7 +855,7 @@ int tipc_nl_bearer_disable(struct sk_buff *skb, struct genl_info *info) | |||
855 | return err; | 855 | return err; |
856 | } | 856 | } |
857 | 857 | ||
858 | int tipc_nl_bearer_enable(struct sk_buff *skb, struct genl_info *info) | 858 | int __tipc_nl_bearer_enable(struct sk_buff *skb, struct genl_info *info) |
859 | { | 859 | { |
860 | int err; | 860 | int err; |
861 | char *bearer; | 861 | char *bearer; |
@@ -897,15 +897,18 @@ int tipc_nl_bearer_enable(struct sk_buff *skb, struct genl_info *info) | |||
897 | prio = nla_get_u32(props[TIPC_NLA_PROP_PRIO]); | 897 | prio = nla_get_u32(props[TIPC_NLA_PROP_PRIO]); |
898 | } | 898 | } |
899 | 899 | ||
900 | return tipc_enable_bearer(net, bearer, domain, prio, attrs); | ||
901 | } | ||
902 | |||
903 | int tipc_nl_bearer_enable(struct sk_buff *skb, struct genl_info *info) | ||
904 | { | ||
905 | int err; | ||
906 | |||
900 | rtnl_lock(); | 907 | rtnl_lock(); |
901 | err = tipc_enable_bearer(net, bearer, domain, prio, attrs); | 908 | err = __tipc_nl_bearer_enable(skb, info); |
902 | if (err) { | ||
903 | rtnl_unlock(); | ||
904 | return err; | ||
905 | } | ||
906 | rtnl_unlock(); | 909 | rtnl_unlock(); |
907 | 910 | ||
908 | return 0; | 911 | return err; |
909 | } | 912 | } |
910 | 913 | ||
911 | int tipc_nl_bearer_add(struct sk_buff *skb, struct genl_info *info) | 914 | int tipc_nl_bearer_add(struct sk_buff *skb, struct genl_info *info) |
diff --git a/net/tipc/bearer.h b/net/tipc/bearer.h index bcc6d5f7014b..fc81150ca9c9 100644 --- a/net/tipc/bearer.h +++ b/net/tipc/bearer.h | |||
@@ -190,6 +190,7 @@ extern struct tipc_media udp_media_info; | |||
190 | int tipc_nl_bearer_disable(struct sk_buff *skb, struct genl_info *info); | 190 | int tipc_nl_bearer_disable(struct sk_buff *skb, struct genl_info *info); |
191 | int __tipc_nl_bearer_disable(struct sk_buff *skb, struct genl_info *info); | 191 | int __tipc_nl_bearer_disable(struct sk_buff *skb, struct genl_info *info); |
192 | int tipc_nl_bearer_enable(struct sk_buff *skb, struct genl_info *info); | 192 | int tipc_nl_bearer_enable(struct sk_buff *skb, struct genl_info *info); |
193 | int __tipc_nl_bearer_enable(struct sk_buff *skb, struct genl_info *info); | ||
193 | int tipc_nl_bearer_dump(struct sk_buff *skb, struct netlink_callback *cb); | 194 | int tipc_nl_bearer_dump(struct sk_buff *skb, struct netlink_callback *cb); |
194 | int tipc_nl_bearer_get(struct sk_buff *skb, struct genl_info *info); | 195 | int tipc_nl_bearer_get(struct sk_buff *skb, struct genl_info *info); |
195 | int tipc_nl_bearer_set(struct sk_buff *skb, struct genl_info *info); | 196 | int tipc_nl_bearer_set(struct sk_buff *skb, struct genl_info *info); |