aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/bearer.c')
-rw-r--r--net/tipc/bearer.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c
index 70e3dacbf84a..bf7d6a44c6f2 100644
--- a/net/tipc/bearer.c
+++ b/net/tipc/bearer.c
@@ -386,6 +386,10 @@ int tipc_enable_l2_media(struct net *net, struct tipc_bearer *b,
386 dev = dev_get_by_name(net, driver_name); 386 dev = dev_get_by_name(net, driver_name);
387 if (!dev) 387 if (!dev)
388 return -ENODEV; 388 return -ENODEV;
389 if (tipc_mtu_bad(dev, 0)) {
390 dev_put(dev);
391 return -EINVAL;
392 }
389 393
390 /* Associate TIPC bearer with L2 bearer */ 394 /* Associate TIPC bearer with L2 bearer */
391 rcu_assign_pointer(b->media_ptr, dev); 395 rcu_assign_pointer(b->media_ptr, dev);
@@ -524,14 +528,17 @@ static int tipc_l2_device_event(struct notifier_block *nb, unsigned long evt,
524 if (!b_ptr) 528 if (!b_ptr)
525 return NOTIFY_DONE; 529 return NOTIFY_DONE;
526 530
527 b_ptr->mtu = dev->mtu;
528
529 switch (evt) { 531 switch (evt) {
530 case NETDEV_CHANGE: 532 case NETDEV_CHANGE:
531 if (netif_carrier_ok(dev)) 533 if (netif_carrier_ok(dev))
532 break; 534 break;
533 case NETDEV_DOWN: 535 case NETDEV_DOWN:
534 case NETDEV_CHANGEMTU: 536 case NETDEV_CHANGEMTU:
537 if (tipc_mtu_bad(dev, 0)) {
538 bearer_disable(net, b_ptr, false);
539 break;
540 }
541 b_ptr->mtu = dev->mtu;
535 tipc_reset_bearer(net, b_ptr); 542 tipc_reset_bearer(net, b_ptr);
536 break; 543 break;
537 case NETDEV_CHANGEADDR: 544 case NETDEV_CHANGEADDR: