-Index: linux-2.4.35.4/net/atm/br2684.c
-===================================================================
---- linux-2.4.35.4.orig/net/atm/br2684.c
-+++ linux-2.4.35.4/net/atm/br2684.c
+--- a/net/atm/br2684.c
++++ b/net/atm/br2684.c
@@ -55,36 +55,55 @@ static void skb_debug(const struct sk_bu
#define skb_debug(skb) do {} while (0)
#endif
netif_rx(skb);
}
-@@ -525,10 +625,10 @@ Note: we do not have explicit unassign,
+@@ -529,10 +629,10 @@ Note: we do not have explicit unassign,
err = -EEXIST;
goto error;
}
err = -EINVAL;
goto error;
}
-@@ -554,18 +654,21 @@ Note: we do not have explicit unassign,
+@@ -553,18 +653,21 @@ Note: we do not have explicit unassign,
brvcc->atmvcc = atmvcc;
atmvcc->user_back = brvcc;
brvcc->encaps = (enum br2684_encaps) be.encaps;
- error:
+ error:
write_unlock_irq(&devs_lock);
+ kfree(brvcc);
MOD_DEC_USE_COUNT;
- return err;
@@ -608,12 +711,25 @@ static int br2684_create(unsigned long a
if (ni.ifname[0] != '\0') {
while (!list_empty(&br2684_devs)) {
brdev = list_entry_brdev(br2684_devs.next);
unregister_netdev(&brdev->net_dev);
-Index: linux-2.4.35.4/net/atm/common.c
-===================================================================
---- linux-2.4.35.4.orig/net/atm/common.c
-+++ linux-2.4.35.4/net/atm/common.c
+--- a/net/atm/common.c
++++ b/net/atm/common.c
@@ -158,6 +158,7 @@ void br2684_ioctl_set(int (*hook)(struct
}
#ifdef CONFIG_ATM_BR2684_MODULE
#endif
#endif
-Index: linux-2.4.35.4/include/linux/atmbr2684.h
-===================================================================
---- linux-2.4.35.4.orig/include/linux/atmbr2684.h
-+++ linux-2.4.35.4/include/linux/atmbr2684.h
+--- a/include/linux/atmbr2684.h
++++ b/include/linux/atmbr2684.h
@@ -3,6 +3,7 @@
#include <linux/atm.h>