These are the USB leaks (usb-midi, hiddev) from

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

Reply via email to