Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758430Ab0KAQQq (ORCPT ); Mon, 1 Nov 2010 12:16:46 -0400 Received: from mail-yw0-f46.google.com ([209.85.213.46]:50226 "EHLO mail-yw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753416Ab0KAQQp convert rfc822-to-8bit (ORCPT ); Mon, 1 Nov 2010 12:16:45 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=bq/YsVtWOByuYDed3IN4r8UE8fzm+VCnPvvNeVwFp6teLbjbSS7hQInUuOm8XubsAB JtkvyPSkkYjP2EiAGHZtdwzPTbYKlw0DdvZarKxYHIFn4xqtiox6Zv6SVsrHT5ved/YG VX3C0I+1HKCi10Pd2NXAqfFJk5hI1xzGpwnm4= MIME-Version: 1.0 In-Reply-To: <1288253909-12084-1-git-send-email-mad_soft@inbox.ru> References: <1288253909-12084-1-git-send-email-mad_soft@inbox.ru> Date: Mon, 1 Nov 2010 17:16:39 +0100 Message-ID: Subject: Re: [PATCH] USB: gadget: fix ethernet gadget crash in gether_setup From: =?ISO-8859-2?Q?Micha=B3_Miros=B3aw?= To: Dmitry Artamonow Cc: linux-usb@vger.kernel.org, David Brownell , Greg Kroah-Hartman , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Tom Herbert , "David S. Miller" Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1694 Lines: 42 2010/10/28 Dmitry Artamonow : > Crash is triggered by commit e6484930d7 ("net: allocate tx queues in > register_netdevice"), which moved tx netqueue creation into register_netdev. > So now calling netif_stop_queue() before register_netdev causes an oops. > Move netif_stop_queue() after net device registration to fix crash. > > Signed-off-by: Dmitry Artamonow > --- > ?drivers/usb/gadget/u_ether.c | ? ?2 +- > ?1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/usb/gadget/u_ether.c b/drivers/usb/gadget/u_ether.c > index 6bb876d..cb23355 100644 > --- a/drivers/usb/gadget/u_ether.c > +++ b/drivers/usb/gadget/u_ether.c > @@ -797,7 +797,6 @@ int gether_setup(struct usb_gadget *g, u8 ethaddr[ETH_ALEN]) > ? ? ? ? * ?- iff DATA transfer is active, carrier is "on" > ? ? ? ? * ?- tx queueing enabled if open *and* carrier is "on" > ? ? ? ? */ > - ? ? ? netif_stop_queue(net); > ? ? ? ?netif_carrier_off(net); > > ? ? ? ?dev->gadget = g; > @@ -812,6 +811,7 @@ int gether_setup(struct usb_gadget *g, u8 ethaddr[ETH_ALEN]) > ? ? ? ? ? ? ? ?INFO(dev, "MAC %pM\n", net->dev_addr); > ? ? ? ? ? ? ? ?INFO(dev, "HOST MAC %pM\n", dev->host_mac); > > + ? ? ? ? ? ? ? netif_stop_queue(net); > ? ? ? ? ? ? ? ?the_dev = dev; > ? ? ? ?} > What about a race between register_netdev() -> open() -> rest of gether_setup() ? What is this netif_stop_queue() here needed for? Best Regards, Micha? Miros?aw -- 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/