On Tue, Sep 16, 2003 at 05:14:51PM -0700, Paul Stewart wrote:
> Looks like a straightforward fix, but if you need a patch from me,
> for hiddev, Vojtech, let me know what to base it off.

I'll fix it myself, thanks.

> 
> --
> Paul
> 
> In message <[EMAIL PROTECTED]> you write:
> >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 retu
> >rn 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, out
> >CableId );
> >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_HIDDE
> >V) == 0)
> >  721:               return -1;
> >  722:
> >START -->
> >  723:       if (!(hiddev = kmalloc(sizeof(struct hiddev), GFP_KER
> >NEL)))
> >  724:               return -1;
> >  725:       memset(hiddev, 0, sizeof(struct hiddev));
> >  726:
> >  727:       retval = usb_register_dev(&hiddev->intf, &hiddev_clas
> >s);
> >  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;
> >---------------------------------------------------------
> >
> >
> >

-- 
Vojtech Pavlik
SuSE Labs, SuSE CR


-------------------------------------------------------
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