X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fusb%2Fimage%2Fmdc800.c;h=d9461e34243838b30ba75f33567ab1ad951516e2;hb=27879d9d66f2dea19cfcd0e1df8358a33447f45b;hp=f401557f035693bbe4292440822a55affdf9b35c;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/drivers/usb/image/mdc800.c b/drivers/usb/image/mdc800.c index f401557f0..d9461e342 100644 --- a/drivers/usb/image/mdc800.c +++ b/drivers/usb/image/mdc800.c @@ -190,7 +190,7 @@ static struct usb_endpoint_descriptor mdc800_ed [4] = /* The Variable used by the driver */ -static struct mdc800_data* mdc800; +static struct mdc800_data* mdc800=0; /*************************************************************************** @@ -547,7 +547,7 @@ static void mdc800_usb_disconnect (struct usb_interface *intf) usb_unlink_urb (mdc800->write_urb); usb_unlink_urb (mdc800->download_urb); - mdc800->dev = NULL; + mdc800->dev=0; usb_set_intfdata(intf, NULL); } info ("Mustek MDC800 disconnected from USB."); @@ -971,7 +971,9 @@ static struct usb_driver mdc800_usb_driver = Init and Cleanup this driver (Main Functions) *************************************************************************/ -#define try(A) if (!(A)) goto cleanup_on_fail; +#define try(A) if ((A) == 0) goto cleanup_on_fail; +#define try_free_mem(A) if (A != 0) { kfree (A); A=0; } +#define try_free_urb(A) if (A != 0) { usb_free_urb (A); A=0; } static int __init usb_mdc800_init (void) { @@ -980,7 +982,7 @@ static int __init usb_mdc800_init (void) try (mdc800=kmalloc (sizeof (struct mdc800_data), GFP_KERNEL)); memset(mdc800, 0, sizeof(struct mdc800_data)); - mdc800->dev = NULL; + mdc800->dev=0; mdc800->open=0; mdc800->state=NOT_CONNECTED; init_MUTEX (&mdc800->io_lock); @@ -1018,17 +1020,17 @@ cleanup_on_fail: { err ("can't alloc memory!"); - kfree(mdc800->download_urb_buffer); - kfree(mdc800->write_urb_buffer); - kfree(mdc800->irq_urb_buffer); + try_free_mem (mdc800->download_urb_buffer); + try_free_mem (mdc800->write_urb_buffer); + try_free_mem (mdc800->irq_urb_buffer); - usb_free_urb(mdc800->write_urb); - usb_free_urb(mdc800->download_urb); - usb_free_urb(mdc800->irq_urb); + try_free_urb (mdc800->write_urb); + try_free_urb (mdc800->download_urb); + try_free_urb (mdc800->irq_urb); kfree (mdc800); } - mdc800 = NULL; + mdc800=0; return retval; } @@ -1046,7 +1048,7 @@ static void __exit usb_mdc800_cleanup (void) kfree (mdc800->download_urb_buffer); kfree (mdc800); - mdc800 = NULL; + mdc800=0; } module_init (usb_mdc800_init);