linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH wireless-drivers] mt7601u: fix kernel crash unplugging the device
@ 2021-01-17 21:46 Lorenzo Bianconi
  2021-01-18 16:54 ` Jakub Kicinski
  2021-01-25 14:03 ` [wireless-drivers] " Kalle Valo
  0 siblings, 2 replies; 5+ messages in thread
From: Lorenzo Bianconi @ 2021-01-17 21:46 UTC (permalink / raw)
  To: linux-wireless; +Cc: lorenzo.bianconi, kuba, matthias_berndt, mozlima

Fix the following kernel crash unplugging the usb dongle

Hardware name: Hewlett-Packard 500-539ng/2B2C, BIOS 80.06 04/01/2015
Workqueue: usb_hub_wq hub_event
RIP: 0010:skb_trim+0x2c/0x30
RSP: 0000:ffffb4c88005bba8 EFLAGS: 00010206
RAX: 000000004ad483ee RBX: ffff9a236625dee0 RCX: 000000000000662f
RDX: 000000000000000c RSI: 0000000000000000 RDI: ffff9a2343179300
RBP: ffff9a2343179300 R08: 0000000000000001 R09: 0000000000000000
R10: ffff9a23748f7840 R11: 0000000000000001 R12: ffff9a236625e4d4
R13: ffff9a236625dee0 R14: 0000000000001080 R15: 0000000000000008
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fd410a34ef8 CR3: 00000001416ee001 CR4: 00000000001706f0
Call Trace:
 mt7601u_tx_status+0x3e/0xa0 [mt7601u]
 mt7601u_dma_cleanup+0xca/0x110 [mt7601u]
 mt7601u_cleanup+0x22/0x30 [mt7601u]
 mt7601u_disconnect+0x22/0x60 [mt7601u]
 usb_unbind_interface+0x8a/0x270
 ? kernfs_find_ns+0x35/0xd0
 __device_release_driver+0x17a/0x230
 device_release_driver+0x24/0x30
 bus_remove_device+0xdb/0x140
 device_del+0x18b/0x430
 ? kobject_put+0x98/0x1d0
 usb_disable_device+0xc6/0x1f0
 usb_disconnect.cold+0x7e/0x20a
 hub_event+0xbf3/0x1870
 process_one_work+0x1b6/0x350
 worker_thread+0x53/0x3e0
 ? process_one_work+0x350/0x350
 kthread+0x11b/0x140
 ? __kthread_bind_mask+0x60/0x60
 ret_from_fork+0x22/0x30

Fixes: 23377c200b2eb ("mt7601u: fix possible memory leak when the device is disconnected")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/net/wireless/mediatek/mt7601u/dma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/mediatek/mt7601u/dma.c b/drivers/net/wireless/mediatek/mt7601u/dma.c
index 47710da5b2a5..af7d1ecb777c 100644
--- a/drivers/net/wireless/mediatek/mt7601u/dma.c
+++ b/drivers/net/wireless/mediatek/mt7601u/dma.c
@@ -309,7 +309,6 @@ static int mt7601u_dma_submit_tx(struct mt7601u_dev *dev,
 	}
 
 	e = &q->e[q->end];
-	e->skb = skb;
 	usb_fill_bulk_urb(e->urb, usb_dev, snd_pipe, skb->data, skb->len,
 			  mt7601u_complete_tx, q);
 	ret = usb_submit_urb(e->urb, GFP_ATOMIC);
@@ -327,6 +326,7 @@ static int mt7601u_dma_submit_tx(struct mt7601u_dev *dev,
 
 	q->end = (q->end + 1) % q->entries;
 	q->used++;
+	e->skb = skb;
 
 	if (q->used >= q->entries)
 		ieee80211_stop_queue(dev->hw, skb_get_queue_mapping(skb));
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH wireless-drivers] mt7601u: fix kernel crash unplugging the device
  2021-01-17 21:46 [PATCH wireless-drivers] mt7601u: fix kernel crash unplugging the device Lorenzo Bianconi
@ 2021-01-18 16:54 ` Jakub Kicinski
  2021-01-18 23:30   ` Lorenzo Bianconi
  2021-01-25 14:03 ` [wireless-drivers] " Kalle Valo
  1 sibling, 1 reply; 5+ messages in thread
From: Jakub Kicinski @ 2021-01-18 16:54 UTC (permalink / raw)
  To: Lorenzo Bianconi
  Cc: linux-wireless, lorenzo.bianconi, matthias_berndt, mozlima

On Sun, 17 Jan 2021 22:46:01 +0100 Lorenzo Bianconi wrote:
> Fix the following kernel crash unplugging the usb dongle
> 
> [...]
>
> Fixes: 23377c200b2eb ("mt7601u: fix possible memory leak when the device is disconnected")
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>

A few words of explanation beyond the stack trace without line info
would perhaps make the review quicker..

Acked-by: Jakub Kicinski <kubakici@wp.pl>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH wireless-drivers] mt7601u: fix kernel crash unplugging the device
  2021-01-18 16:54 ` Jakub Kicinski
@ 2021-01-18 23:30   ` Lorenzo Bianconi
  2021-01-19  7:59     ` Kalle Valo
  0 siblings, 1 reply; 5+ messages in thread
From: Lorenzo Bianconi @ 2021-01-18 23:30 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: Lorenzo Bianconi, linux-wireless, matthias_berndt, mozlima

> On Sun, 17 Jan 2021 22:46:01 +0100 Lorenzo Bianconi wrote:
> > Fix the following kernel crash unplugging the usb dongle
> >
> > [...]
> >
> > Fixes: 23377c200b2eb ("mt7601u: fix possible memory leak when the device is disconnected")
> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
>
> A few words of explanation beyond the stack trace without line info
> would perhaps make the review quicker..
>

Hi Jakub,

right, sorry for that. I will add some more info here so Kalle can add
it to the commit log merging the patch.

"
The following crash log can occur unplugging the usb dongle since,
after the urb poison in mt7601u_free_tx_queue(), usb_submit_urb() will
always fail resulting in a skb kfree while the skb has been already
queued.
Fix the issue enqueuing the skb only if usb_submit_urb() succeed.
"

@Kalle: is it ok or do you prefer to resubmit? (sorry for the noise)

Regards,
Lorenzo




>
> Acked-by: Jakub Kicinski <kubakici@wp.pl>
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH wireless-drivers] mt7601u: fix kernel crash unplugging the device
  2021-01-18 23:30   ` Lorenzo Bianconi
@ 2021-01-19  7:59     ` Kalle Valo
  0 siblings, 0 replies; 5+ messages in thread
From: Kalle Valo @ 2021-01-19  7:59 UTC (permalink / raw)
  To: Lorenzo Bianconi
  Cc: Jakub Kicinski, Lorenzo Bianconi, linux-wireless,
	matthias_berndt, mozlima

Lorenzo Bianconi <lorenzo.bianconi@redhat.com> writes:

>> On Sun, 17 Jan 2021 22:46:01 +0100 Lorenzo Bianconi wrote:
>> > Fix the following kernel crash unplugging the usb dongle
>> >
>> > [...]
>> >
>> > Fixes: 23377c200b2eb ("mt7601u: fix possible memory leak when the device is disconnected")
>> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
>>
>> A few words of explanation beyond the stack trace without line info
>> would perhaps make the review quicker..
>>
>
> Hi Jakub,
>
> right, sorry for that. I will add some more info here so Kalle can add
> it to the commit log merging the patch.
>
> "
> The following crash log can occur unplugging the usb dongle since,
> after the urb poison in mt7601u_free_tx_queue(), usb_submit_urb() will
> always fail resulting in a skb kfree while the skb has been already
> queued.
> Fix the issue enqueuing the skb only if usb_submit_urb() succeed.
> "
>
> @Kalle: is it ok or do you prefer to resubmit? (sorry for the noise)

This is ok, no need to resend. I have an edit command in my patchwork
script :)

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [wireless-drivers] mt7601u: fix kernel crash unplugging the device
  2021-01-17 21:46 [PATCH wireless-drivers] mt7601u: fix kernel crash unplugging the device Lorenzo Bianconi
  2021-01-18 16:54 ` Jakub Kicinski
@ 2021-01-25 14:03 ` Kalle Valo
  1 sibling, 0 replies; 5+ messages in thread
From: Kalle Valo @ 2021-01-25 14:03 UTC (permalink / raw)
  To: Lorenzo Bianconi
  Cc: linux-wireless, lorenzo.bianconi, kuba, matthias_berndt, mozlima

Lorenzo Bianconi <lorenzo@kernel.org> wrote:

> The following crash log can occur unplugging the usb dongle since,
> after the urb poison in mt7601u_free_tx_queue(), usb_submit_urb() will
> always fail resulting in a skb kfree while the skb has been already
> queued.
> 
> Fix the issue enqueuing the skb only if usb_submit_urb() succeed.
> 
> Hardware name: Hewlett-Packard 500-539ng/2B2C, BIOS 80.06 04/01/2015
> Workqueue: usb_hub_wq hub_event
> RIP: 0010:skb_trim+0x2c/0x30
> RSP: 0000:ffffb4c88005bba8 EFLAGS: 00010206
> RAX: 000000004ad483ee RBX: ffff9a236625dee0 RCX: 000000000000662f
> RDX: 000000000000000c RSI: 0000000000000000 RDI: ffff9a2343179300
> RBP: ffff9a2343179300 R08: 0000000000000001 R09: 0000000000000000
> R10: ffff9a23748f7840 R11: 0000000000000001 R12: ffff9a236625e4d4
> R13: ffff9a236625dee0 R14: 0000000000001080 R15: 0000000000000008
> CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 00007fd410a34ef8 CR3: 00000001416ee001 CR4: 00000000001706f0
> Call Trace:
>  mt7601u_tx_status+0x3e/0xa0 [mt7601u]
>  mt7601u_dma_cleanup+0xca/0x110 [mt7601u]
>  mt7601u_cleanup+0x22/0x30 [mt7601u]
>  mt7601u_disconnect+0x22/0x60 [mt7601u]
>  usb_unbind_interface+0x8a/0x270
>  ? kernfs_find_ns+0x35/0xd0
>  __device_release_driver+0x17a/0x230
>  device_release_driver+0x24/0x30
>  bus_remove_device+0xdb/0x140
>  device_del+0x18b/0x430
>  ? kobject_put+0x98/0x1d0
>  usb_disable_device+0xc6/0x1f0
>  usb_disconnect.cold+0x7e/0x20a
>  hub_event+0xbf3/0x1870
>  process_one_work+0x1b6/0x350
>  worker_thread+0x53/0x3e0
>  ? process_one_work+0x350/0x350
>  kthread+0x11b/0x140
>  ? __kthread_bind_mask+0x60/0x60
>  ret_from_fork+0x22/0x30
> 
> Fixes: 23377c200b2eb ("mt7601u: fix possible memory leak when the device is disconnected")
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> Acked-by: Jakub Kicinski <kubakici@wp.pl>

Patch applied to wireless-drivers.git, thanks.

0acb20a5438c mt7601u: fix kernel crash unplugging the device

-- 
https://patchwork.kernel.org/project/linux-wireless/patch/3b85219f669a63a8ced1f43686de05915a580489.1610919247.git.lorenzo@kernel.org/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-01-26  2:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-17 21:46 [PATCH wireless-drivers] mt7601u: fix kernel crash unplugging the device Lorenzo Bianconi
2021-01-18 16:54 ` Jakub Kicinski
2021-01-18 23:30   ` Lorenzo Bianconi
2021-01-19  7:59     ` Kalle Valo
2021-01-25 14:03 ` [wireless-drivers] " Kalle Valo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).