Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1764273AbXESTcA (ORCPT ); Sat, 19 May 2007 15:32:00 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756513AbXESTbx (ORCPT ); Sat, 19 May 2007 15:31:53 -0400 Received: from pentafluge.infradead.org ([213.146.154.40]:50739 "EHLO pentafluge.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759198AbXESTbx (ORCPT ); Sat, 19 May 2007 15:31:53 -0400 Date: Sat, 19 May 2007 12:33:07 -0700 From: Greg KH To: Christoph Lameter Cc: Indan Zupancic , Linux Kernel Mailing List Subject: Re: [BUG: 2.6.22-rc2] SLAB doesn't like usb_get_configuration() Message-ID: <20070519193307.GA26156@kroah.com> References: <3642.81.207.0.53.1179584891.squirrel@secure.samage.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.15 (2007-04-06) Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1724 Lines: 53 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 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 --- 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/