dtoverlays: Add overlays for the IMX708 image sensor
[platform/kernel/linux-rpi.git] / net / tipc / bearer.c
index 443f8e5..b0ad61b 100644 (file)
@@ -259,9 +259,8 @@ static int tipc_enable_bearer(struct net *net, const char *name,
        u32 i;
 
        if (!bearer_name_validate(name, &b_names)) {
-               errstr = "illegal name";
                NL_SET_ERR_MSG(extack, "Illegal name");
-               goto rejected;
+               return res;
        }
 
        if (prio > TIPC_MAX_LINK_PRI && prio != TIPC_MEDIA_LINK_PRI) {
@@ -352,16 +351,18 @@ static int tipc_enable_bearer(struct net *net, const char *name,
                goto rejected;
        }
 
-       test_and_set_bit_lock(0, &b->up);
-       rcu_assign_pointer(tn->bearer_list[bearer_id], b);
-       if (skb)
-               tipc_bearer_xmit_skb(net, bearer_id, skb, &b->bcast_addr);
-
+       /* Create monitoring data before accepting activate messages */
        if (tipc_mon_create(net, bearer_id)) {
                bearer_disable(net, b);
+               kfree_skb(skb);
                return -ENOMEM;
        }
 
+       test_and_set_bit_lock(0, &b->up);
+       rcu_assign_pointer(tn->bearer_list[bearer_id], b);
+       if (skb)
+               tipc_bearer_xmit_skb(net, bearer_id, skb, &b->bcast_addr);
+
        pr_info("Enabled bearer <%s>, priority %u\n", name, prio);
 
        return res;