tipc: eliminate buffer leak in bearer layer
[cascardo/linux.git] / net / tipc / discover.c
index f1e738e..ad9d477 100644 (file)
@@ -268,10 +268,9 @@ exit:
  * Returns 0 if successful, otherwise -errno.
  */
 int tipc_disc_create(struct net *net, struct tipc_bearer *b,
-                    struct tipc_media_addr *dest)
+                    struct tipc_media_addr *dest, struct sk_buff **skb)
 {
        struct tipc_link_req *req;
-       struct sk_buff *skb;
 
        req = kmalloc(sizeof(*req), GFP_ATOMIC);
        if (!req)
@@ -293,9 +292,7 @@ int tipc_disc_create(struct net *net, struct tipc_bearer *b,
        setup_timer(&req->timer, disc_timeout, (unsigned long)req);
        mod_timer(&req->timer, jiffies + req->timer_intv);
        b->link_req = req;
-       skb = skb_clone(req->buf, GFP_ATOMIC);
-       if (skb)
-               tipc_bearer_xmit_skb(net, req->bearer_id, skb, &req->dest);
+       *skb = skb_clone(req->buf, GFP_ATOMIC);
        return 0;
 }