diff options
Diffstat (limited to 'net/tipc/bearer.c')
| -rw-r--r-- | net/tipc/bearer.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c index 70e3dacbf84a..00bc0e620532 100644 --- a/net/tipc/bearer.c +++ b/net/tipc/bearer.c | |||
| @@ -71,8 +71,7 @@ static const struct nla_policy tipc_nl_media_policy[TIPC_NLA_MEDIA_MAX + 1] = { | |||
| 71 | [TIPC_NLA_MEDIA_PROP] = { .type = NLA_NESTED } | 71 | [TIPC_NLA_MEDIA_PROP] = { .type = NLA_NESTED } |
| 72 | }; | 72 | }; |
| 73 | 73 | ||
| 74 | static void bearer_disable(struct net *net, struct tipc_bearer *b_ptr, | 74 | static void bearer_disable(struct net *net, struct tipc_bearer *b_ptr); |
| 75 | bool shutting_down); | ||
| 76 | 75 | ||
| 77 | /** | 76 | /** |
| 78 | * tipc_media_find - locates specified media object by name | 77 | * tipc_media_find - locates specified media object by name |
| @@ -324,7 +323,7 @@ restart: | |||
| 324 | 323 | ||
| 325 | res = tipc_disc_create(net, b_ptr, &b_ptr->bcast_addr); | 324 | res = tipc_disc_create(net, b_ptr, &b_ptr->bcast_addr); |
| 326 | if (res) { | 325 | if (res) { |
| 327 | bearer_disable(net, b_ptr, false); | 326 | bearer_disable(net, b_ptr); |
| 328 | pr_warn("Bearer <%s> rejected, discovery object creation failed\n", | 327 | pr_warn("Bearer <%s> rejected, discovery object creation failed\n", |
| 329 | name); | 328 | name); |
| 330 | return -EINVAL; | 329 | return -EINVAL; |
| @@ -344,7 +343,7 @@ restart: | |||
| 344 | static int tipc_reset_bearer(struct net *net, struct tipc_bearer *b_ptr) | 343 | static int tipc_reset_bearer(struct net *net, struct tipc_bearer *b_ptr) |
| 345 | { | 344 | { |
| 346 | pr_info("Resetting bearer <%s>\n", b_ptr->name); | 345 | pr_info("Resetting bearer <%s>\n", b_ptr->name); |
| 347 | tipc_link_reset_list(net, b_ptr->identity); | 346 | tipc_link_delete_list(net, b_ptr->identity); |
| 348 | tipc_disc_reset(net, b_ptr); | 347 | tipc_disc_reset(net, b_ptr); |
| 349 | return 0; | 348 | return 0; |
| 350 | } | 349 | } |
| @@ -354,8 +353,7 @@ static int tipc_reset_bearer(struct net *net, struct tipc_bearer *b_ptr) | |||
| 354 | * | 353 | * |
| 355 | * Note: This routine assumes caller holds RTNL lock. | 354 | * Note: This routine assumes caller holds RTNL lock. |
| 356 | */ | 355 | */ |
| 357 | static void bearer_disable(struct net *net, struct tipc_bearer *b_ptr, | 356 | static void bearer_disable(struct net *net, struct tipc_bearer *b_ptr) |
| 358 | bool shutting_down) | ||
| 359 | { | 357 | { |
| 360 | struct tipc_net *tn = net_generic(net, tipc_net_id); | 358 | struct tipc_net *tn = net_generic(net, tipc_net_id); |
| 361 | u32 i; | 359 | u32 i; |
| @@ -363,7 +361,7 @@ static void bearer_disable(struct net *net, struct tipc_bearer *b_ptr, | |||
| 363 | pr_info("Disabling bearer <%s>\n", b_ptr->name); | 361 | pr_info("Disabling bearer <%s>\n", b_ptr->name); |
| 364 | b_ptr->media->disable_media(b_ptr); | 362 | b_ptr->media->disable_media(b_ptr); |
| 365 | 363 | ||
| 366 | tipc_link_delete_list(net, b_ptr->identity, shutting_down); | 364 | tipc_link_delete_list(net, b_ptr->identity); |
| 367 | if (b_ptr->link_req) | 365 | if (b_ptr->link_req) |
| 368 | tipc_disc_delete(b_ptr->link_req); | 366 | tipc_disc_delete(b_ptr->link_req); |
| 369 | 367 | ||
| @@ -541,7 +539,7 @@ static int tipc_l2_device_event(struct notifier_block *nb, unsigned long evt, | |||
| 541 | break; | 539 | break; |
| 542 | case NETDEV_UNREGISTER: | 540 | case NETDEV_UNREGISTER: |
| 543 | case NETDEV_CHANGENAME: | 541 | case NETDEV_CHANGENAME: |
| 544 | bearer_disable(dev_net(dev), b_ptr, false); | 542 | bearer_disable(dev_net(dev), b_ptr); |
| 545 | break; | 543 | break; |
| 546 | } | 544 | } |
| 547 | return NOTIFY_OK; | 545 | return NOTIFY_OK; |
| @@ -583,7 +581,7 @@ void tipc_bearer_stop(struct net *net) | |||
| 583 | for (i = 0; i < MAX_BEARERS; i++) { | 581 | for (i = 0; i < MAX_BEARERS; i++) { |
| 584 | b_ptr = rtnl_dereference(tn->bearer_list[i]); | 582 | b_ptr = rtnl_dereference(tn->bearer_list[i]); |
| 585 | if (b_ptr) { | 583 | if (b_ptr) { |
| 586 | bearer_disable(net, b_ptr, true); | 584 | bearer_disable(net, b_ptr); |
| 587 | tn->bearer_list[i] = NULL; | 585 | tn->bearer_list[i] = NULL; |
| 588 | } | 586 | } |
| 589 | } | 587 | } |
| @@ -747,7 +745,7 @@ int tipc_nl_bearer_disable(struct sk_buff *skb, struct genl_info *info) | |||
| 747 | return -EINVAL; | 745 | return -EINVAL; |
| 748 | } | 746 | } |
| 749 | 747 | ||
| 750 | bearer_disable(net, bearer, false); | 748 | bearer_disable(net, bearer); |
| 751 | rtnl_unlock(); | 749 | rtnl_unlock(); |
| 752 | 750 | ||
| 753 | return 0; | 751 | return 0; |
| @@ -812,7 +810,7 @@ int tipc_nl_bearer_set(struct sk_buff *skb, struct genl_info *info) | |||
| 812 | char *name; | 810 | char *name; |
| 813 | struct tipc_bearer *b; | 811 | struct tipc_bearer *b; |
| 814 | struct nlattr *attrs[TIPC_NLA_BEARER_MAX + 1]; | 812 | struct nlattr *attrs[TIPC_NLA_BEARER_MAX + 1]; |
| 815 | struct net *net = genl_info_net(info); | 813 | struct net *net = sock_net(skb->sk); |
| 816 | 814 | ||
| 817 | if (!info->attrs[TIPC_NLA_BEARER]) | 815 | if (!info->attrs[TIPC_NLA_BEARER]) |
| 818 | return -EINVAL; | 816 | return -EINVAL; |
