Re: [BUG: 2.6.22-rc2] SLAB doesn't like usb_get_configuration()

From: Greg KH
Date: Sat May 19 2007 - 15:32:02 EST


On Sat, May 19, 2007 at 11:20:44AM -0700, Christoph Lameter wrote:
> On Sat, 19 May 2007, Indan Zupancic wrote:
>
> > I had two SLAb related bugs, both with usb_get_configuration()
> > near the end of the backtrace. First one was with git between
> > rc1 and rc2, but very close to rc2, second one was with rc2,
> > both at bootup.
>
> Well usb_get_configuration seems to do a kmalloc(0) which is a bit
> strange and this is why we flagged the allocation in the slab allocators.
> Is there some way to avoid allocating an object of zero length?

Can you try the patch below and let me know if it fixes the issue for
you or not?

thanks,

greg k-h


From: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
Subject: [PATCH] USB: don't try to kzalloc 0 bytes

This patch (as907) prevents us from trying to allocate 0 bytes
when an interface has no endpoint descriptors.

Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>

--- usb-2.6.orig/drivers/usb/core/config.c
+++ usb-2.6/drivers/usb/core/config.c
@@ -185,10 +185,12 @@ static int usb_parse_interface(struct de
num_ep = USB_MAXENDPOINTS;
}

- len = sizeof(struct usb_host_endpoint) * num_ep;
- alt->endpoint = kzalloc(len, GFP_KERNEL);
- if (!alt->endpoint)
- return -ENOMEM;
+ if (num_ep > 0) { /* Can't allocate 0 bytes */
+ len = sizeof(struct usb_host_endpoint) * num_ep;
+ alt->endpoint = kzalloc(len, GFP_KERNEL);
+ if (!alt->endpoint)
+ return -ENOMEM;
+ }

/* Parse all the endpoint descriptors */
n = 0;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/