hisax: adds error-checking for hisax_register()
PATCH 1/1 hisax: adds error-checking for hisax_register()
This patch (as875) adds error-checking to the callers of hisax_register(). It also changes an error pathway in that routine, making it return an error code rather than 0.
This fixes Bugzilla #7960.
Signed-off-by Alan Stern <[email protected]>
Signed-off-by Martin Bachem <[email protected]>
Acked-by Karsten Keil <[email protected]>
---
drivers/isdn/hisax/config.c +1 -1
@@ -1551,7 +1551,7 @@ int hisax_register(struct hisax_d_if *hiif (retval ==0 ) {// yuck cards[i].typ =0 ; nrcards--; -return retval; +return -EINVAL ; } cs = cards[i].cs; hisax_d_if->cs = cs;
drivers/isdn/hisax/hfc_usb.c +5 -1
@@ -1306,7 +1306,11 @@ usb_init(hfcusb_data * hfc) }/* default Prot: EURO ISDN, should be a module_param */ hfc->protocol =2 ; -hisax_register (&hfc->d_if, p_b_if,"hfc_usb" , hfc->protocol); + i =hisax_register (&hfc->d_if, p_b_if,"hfc_usb" , hfc->protocol); +if (i) { +printk (KERN_INFO "HFC-S USB: hisax_register -> %d\n" , i); +return i; + }#ifdef CONFIG_HISAX_DEBUG hfc_debug = debug;
drivers/isdn/hisax/hisax_fcpcipnp.c +5 -1
@@ -859,7 +859,11 @@ new_adapter(void)for (i =0 ; i <2 ; i++) b_if[i] = &adapter->bcs[i].b_if; -hisax_register (&adapter->isac.hisax_d_if, b_if,"fcpcipnp" , protocol); +if (hisax_register (&adapter->isac.hisax_d_if, b_if,"fcpcipnp" , + protocol) !=0 ) { +kfree (adapter); + adapter =NULL ; + }return adapter; }
drivers/isdn/hisax/st5481_init.c +6 -1
@@ -107,12 +107,17 @@ static int probe_st5481(struct usb_interfor (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: