]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/isdn/hisax/st5481_init.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arjan/linux...
[linux-2.6-omap-h63xx.git] / drivers / isdn / hisax / st5481_init.c
index 99cb0f3d59a15ff4e4a65748b9bb309858dc5d21..13751237bfcde6d861122cc84ca6c18605ea8dee 100644 (file)
@@ -24,7 +24,6 @@
  * clean up debug
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/usb.h>
@@ -70,12 +69,10 @@ static int probe_st5481(struct usb_interface *intf,
             le16_to_cpu(dev->descriptor.idProduct),
             number_of_leds);
 
-       adapter = kmalloc(sizeof(struct st5481_adapter), GFP_KERNEL);
+       adapter = kzalloc(sizeof(struct st5481_adapter), GFP_KERNEL);
        if (!adapter)
                return -ENOMEM;
 
-       memset(adapter, 0, sizeof(struct st5481_adapter));
-
        adapter->number_of_leds = number_of_leds;
        adapter->usb_dev = dev;
 
@@ -110,12 +107,17 @@ static int probe_st5481(struct usb_interface *intf,
        for (i = 0; i < 2; i++)
                b_if[i] = &adapter->bcs[i].b_if;
 
-       hisax_register(&adapter->hisax_d_if, b_if, "st5481_usb", protocol);
+       if (hisax_register(&adapter->hisax_d_if, b_if, "st5481_usb",
+                       protocol) != 0)
+               goto err_b1;
+
        st5481_start(adapter);
 
        usb_set_intfdata(intf, adapter);
        return 0;
 
+ err_b1:
+       st5481_release_b(&adapter->bcs[1]);
  err_b:
        st5481_release_b(&adapter->bcs[0]);
  err_d: