Re: [PATCH] USB: gadget: fix ethernet gadget crash in gether_setup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: MichaÅ MirosÅaw <mirqus@xxxxxxxxx>
Date: Mon, 1 Nov 2010 17:16:39 +0100

> 2010/10/28 Dmitry Artamonow <mad_soft@xxxxxxxx>:
>> 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 <mad_soft@xxxxxxxx>
>> ---
>> Â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?

Nothing, it should be completely removed.
ÿô.nlj·Ÿ®‰­†+%ŠË±é¥Šwÿº{.nlj·¥Š{±þë)íèjg¬±¨¶‰šŽŠÝjÿ¾«þG«é¸¢·¦j:+v‰¨Šwèm¶Ÿÿþø®w¥þŠà£¢·hšâÿ†Ù



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux