Hi,
if probe fails, allocated URBs and buffers must be freed.
Regards
Oliver
You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.
===================================================================
[EMAIL PROTECTED], 2003-07-16 23:51:16+02:00, [EMAIL PROTECTED]
- fix memory leak in error path of probe
irda-usb.c | 48 +++++++++++++++++++++++++++++-------------------
1 files changed, 29 insertions(+), 19 deletions(-)
diff -Nru a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c
--- a/drivers/net/irda/irda-usb.c Thu Jul 17 01:02:02 2003
+++ b/drivers/net/irda/irda-usb.c Thu Jul 17 01:02:02 2003
@@ -1467,30 +1467,26 @@
for (i = 0; i < IU_MAX_RX_URBS; i++) {
self->rx_urb[i] = usb_alloc_urb(0, GFP_KERNEL);
if (!self->rx_urb[i]) {
- int j;
- for (j = 0; j < i; j++)
- usb_free_urb(self->rx_urb[j]);
- return -ENOMEM;
+ ret = -ENOMEM;
+ goto err_out;
}
}
self->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
if (!self->tx_urb) {
- for (i = 0; i < IU_MAX_RX_URBS; i++)
- usb_free_urb(self->rx_urb[i]);
- return -ENOMEM;
+ ret = -ENOMEM;
+ goto err_out;
}
self->speed_urb = usb_alloc_urb(0, GFP_KERNEL);
if (!self->speed_urb) {
- for (i = 0; i < IU_MAX_RX_URBS; i++)
- usb_free_urb(self->rx_urb[i]);
- usb_free_urb(self->tx_urb);
- return -ENOMEM;
+ ret = -ENOMEM;
+ goto err_out;
}
/* Is this really necessary? */
if (usb_set_configuration (dev, dev->config[0].desc.bConfigurationValue) < 0) {
err("set_configuration failed");
- return -EIO;
+ ret = -EIO;
+ goto err_out;
}
/* Is this really necessary? */
@@ -1510,8 +1506,8 @@
break;
default:
IRDA_DEBUG(0, "%s(), Unknown error %d\n", __FUNCTION__, ret);
- return -EIO;
- break;
+ ret = -EIO;
+ goto err_out;
}
/* Find our endpoints */
@@ -1519,15 +1515,17 @@
if(!irda_usb_parse_endpoints(self, interface->endpoint,
interface->desc.bNumEndpoints)) {
ERROR("%s(), Bogus endpoints...\n", __FUNCTION__);
- return -EIO;
+ ret = -EIO;
+ goto err_out;
}
/* Find IrDA class descriptor */
irda_desc = irda_usb_find_class_desc(intf);
+ ret = -ENODEV;
if (irda_desc == NULL)
- return -ENODEV;
-
- self->irda_desc = irda_desc;
+ goto err_out;
+
+ self->irda_desc = irda_desc;
self->present = 1;
self->netopen = 0;
self->capability = id->driver_info;
@@ -1535,10 +1533,22 @@
self->usbintf = intf;
ret = irda_usb_open(self);
if (ret)
- return -ENOMEM;
+ goto err_out;
usb_set_intfdata(intf, self);
return 0;
+
+err_out:
+ /* Free all urbs */
+ for (i = 0; i < IU_MAX_RX_URBS; i++) {
+ if (self->rx_urb[i])
+ usb_free_urb(self->rx_urb[i]);
+ }
+ if (self->tx_urb) {
+ usb_free_urb(self->tx_urb);
+ }
+
+ return ret;
}
/*------------------------------------------------------------------*/
===================================================================
This BitKeeper patch contains the following changesets:
1.2138
## Wrapped with gzip_uu ##
begin 664 bkpatch18971
M'XL(`&K9%3\``ZU5:6_:0!#][/T5(^5+4F1[+Y^4*!=M49LF(J6*U%3(QQHL
MP([EMAIL PROTECTED]>N[2@)!>5H:B'/,C/O[<SL8]F"42&DK^7S]$I(M`6?\J+T-;5>
M5+'(C$Q4LVIAY'*B8L,\5S%SFB^$V0+,;U*(PJR*4*>&A53.:5!&4U"APM>(
MP>X]Y>VE\+5A_^/HR_X0H5X/#J=!-A%GHH1>#X6SO;@2<V,F\V!:;[>\#R\I
MQH00:F%FV<1:4I<QOB0V#F.UC*GC):'MH:(4,MN3^?4\R&)C&LBK0,:&B*M5
M)H8=8A.'[EMAIL PROTECTED],8:VU;T-,X$.`1VC
M`WA[^8<H`M`A26]@(1:YO(6Y"&:09B"DS"5<[EMAIL PROTECTED]&3A^F
MB/17/@CA`*/=#;7'LFZX,#-1FJF,@^:EJT,VHH=N.'8)7A)E^)([7N#1R'&$
MB#`-O2=&]AQY<SZ4<(\K6F:Y3J.5)T";U?/F%M!$BLE>2QCEBY>4S3'GC'A+
MYJES;F3%R8JHN.=S_@)140]TXOTW6;U"5>W$3T"7U\U'J>3TJ>'[EMAIL PROTECTED]"'<P
M<[EMAIL PROTECTED];)[EMAIL PROTECTED],ZQ+'>55V&[EMAIL PROTECTED](:XN(&L(=8`+F_W
M<)T7`CP&I`9X;`4P.-F4;9$Z:Z`L7VVA35_/I[1AK^US['66K;(?U7S4_]ZR
MM%.P&%;V;[EMAIL PROTECTED]&L2C43P/@_DM#H&ZYIHS&;MA8"990Q73G\Y%F
MOH,/ZHZ'8#Z'2H8%O#.1EBCI;*>*'G<AA?<P&(V/]\_'P_/Q:'[EMAIL PROTECTED]
M4AND"6RW1<F;L8+_2'_NU/-1XADGBK;VK26HD?Q&CZ!E$VD)[EMAIL PROTECTED]:
?)3-0IOOP?Q1-130KJD7/27`21TF([EMAIL PROTECTED]<68LG^08`````
`
end
-------------------------------------------------------
This SF.net email is sponsored by: VM Ware
With VMware you can run multiple operating systems on a single machine.
WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the
same time. Free trial click here: http://www.vmware.com/wl/offer/345/0
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel