Feedbacks are wellcome ... why don't return -ENOMEM on mem. allocation failure in usblp_probe?
diff -urN 1.0/drivers/usb/class/usblp.c 1.1/drivers/usb/class/usblp.c --- 1.0/drivers/usb/class/usblp.c 2003-07-25 22:00:19.000000000 +0200 +++ 1.1/drivers/usb/class/usblp.c 2003-07-25 23:07:47.000000000 +0200 @@ -27,6 +27,8 @@ * v0.12 - add hpoj.sourceforge.net ioctls (David Paschal) * v0.13 - alloc space for statusbuf (<status> not on stack); * use usb_buffer_alloc() for read buf & write buf; + * v0.14 - minor cleanups and better handling of failure in + * usblp_probe. Daniele Bellucci <[EMAIL PROTECTED]> */ /* @@ -60,7 +62,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v0.13" +#define DRIVER_VERSION "v0.14" #define DRIVER_AUTHOR "Michael Gee, Pavel Machek, Vojtech Pavlik, Randy Dunlap, Pete Zaitcev, David Paschal" #define DRIVER_DESC "USB Printer Device Class driver" @@ -851,19 +853,18 @@ goto abort; } - usblp->writebuf = usblp->readbuf = NULL; usblp->writeurb->transfer_flags = URB_NO_TRANSFER_DMA_MAP; usblp->readurb->transfer_flags = URB_NO_TRANSFER_DMA_MAP; /* Malloc write & read buffers. We somewhat wastefully * malloc both regardless of bidirectionality, because the * alternate setting can be changed later via an ioctl. */ if (!(usblp->writebuf = usb_buffer_alloc(dev, USBLP_BUF_SIZE, - GFP_KERNEL, &usblp->writeurb->transfer_dma))) { + GFP_KERNEL, &usblp->writeurb->transfer_dma))) { err("out of memory for write buf"); goto abort; } if (!(usblp->readbuf = usb_buffer_alloc(dev, USBLP_BUF_SIZE, - GFP_KERNEL, &usblp->readurb->transfer_dma))) { + GFP_KERNEL, &usblp->readurb->transfer_dma))) { err("out of memory for read buf"); goto abort; } @@ -927,14 +928,18 @@ if (usblp) { if (usblp->writebuf) usb_buffer_free (usblp->dev, USBLP_BUF_SIZE, - usblp->writebuf, usblp->writeurb->transfer_dma); + usblp->writebuf, usblp->writeurb->transfer_dma); if (usblp->readbuf) usb_buffer_free (usblp->dev, USBLP_BUF_SIZE, - usblp->readbuf, usblp->writeurb->transfer_dma); - kfree(usblp->statusbuf); - kfree(usblp->device_id_string); - usb_free_urb(usblp->writeurb); - usb_free_urb(usblp->readurb); + usblp->readbuf, usblp->writeurb->transfer_dma); + if (usblp->statusbuf) + kfree(usblp->statusbuf); + if (usblp->device_id_string) + kfree(usblp->device_id_string); + if (usblp->writeurb) + usb_free_urb(usblp->writeurb); + if (usblp->readurb) + usb_free_urb(usblp->readurb); kfree(usblp); } return -EIO; Daniele. ------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01 _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel