http://marc.theaimsgroup.com/?l=linux-kernel&m=106368725910864&w=2
In usb-midi, and hiddev.
- Dave
Leaks if devices == 0 ? Error_end only frees mdevs if (devices > 0), but for mdevs=kmalloc(0), the slab allocator may still actually return memory [FILE: 2.6.0-test5/drivers/usb/class/usb-midi.c] [FUNC: alloc_usb_midi_device] [LINES: 1621-1772] [VAR: mdevs] 1616: devices = inDevs > outDevs ? inDevs : outDevs; 1617: devices = maxdevices > devices ? devices : maxdevices; 1618: 1619: /* obtain space for device name (iProduct) if not known. */ 1620: if ( ! u->deviceName ) { START --> 1621: mdevs = (struct usb_mididev **) 1622: kmalloc(sizeof(struct usb_mididevs *)*devices 1623: + sizeof(char) * 256, GFP_KERNEL); 1624: } else { 1625: mdevs = (struct usb_mididev **) 1626: kmalloc(sizeof(struct usb_mididevs *)*devices, GFP_KERNEL); ... DELETED 83 lines ... 1710: } 1711: mout = mouts[outEndpoint]; 1712: 1713: mdevs[i] = allocMidiDev( s, min, mout, inCableId, outCableId ); 1714: if ( mdevs[i] == NULL ) GOTO --> 1715: goto error_end; 1716: 1717: } 1718: 1719: /* Success! */ 1720: for ( i=0 ; i<devices ; i++ ) { ... DELETED 46 lines ... 1767: if ( mouts[i] != NULL ) { 1768: remove_midi_out_endpoint( mouts[i] ); 1769: } 1770: } 1771: END --> 1772: return -ENOMEM; 1773:} 1774: ---------------------------------------------------------
[FILE: 2.6.0-test5/drivers/usb/input/hiddev.c] [FUNC: hiddev_connect] [LINES: 723-730] [VAR: hiddev] 718: break; 719: 720: if (i == hid->maxcollection && (hid->quirks & HID_QUIRK_HIDDEV) == 0) 721: return -1; 722: START --> 723: if (!(hiddev = kmalloc(sizeof(struct hiddev), GFP_KERNEL))) 724: return -1; 725: memset(hiddev, 0, sizeof(struct hiddev)); 726: 727: retval = usb_register_dev(&hiddev->intf, &hiddev_class); 728: if (retval) { 729: err("Not able to get a minor for this device."); END --> 730: return -1; 731: } 732: 733: init_waitqueue_head(&hiddev->wait); 734: 735: hiddev->minor = hiddev->intf.minor; ---------------------------------------------------------
------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel