intel-wired-lan.lists.osuosl.org archive mirror
 help / color / mirror / Atom feed
* [Intel-wired-lan] [PATCH net] igb: fix a use-after-free issue in igb_clean_tx_ring
@ 2022-06-16 14:13 Lorenzo Bianconi
  2022-06-16 18:26 ` Jesse Brandeburg
  2022-06-18  3:20 ` patchwork-bot+netdevbpf
  0 siblings, 2 replies; 6+ messages in thread
From: Lorenzo Bianconi @ 2022-06-16 14:13 UTC (permalink / raw)
  To: netdev
  Cc: intel-wired-lan, jbrouer, edumazet, kuba, pabeni, davem, magnus.karlsson

Fix the following use-after-free bug in igb_clean_tx_ring routine when
the NIC is running in XDP mode. The issue can be triggered redirecting
traffic into the igb NIC and then closing the device while the traffic
is flowing.

[   73.322719] CPU: 1 PID: 487 Comm: xdp_redirect Not tainted 5.18.3-apu2 #9
[   73.330639] Hardware name: PC Engines APU2/APU2, BIOS 4.0.7 02/28/2017
[   73.337434] RIP: 0010:refcount_warn_saturate+0xa7/0xf0
[   73.362283] RSP: 0018:ffffc9000081f798 EFLAGS: 00010282
[   73.367761] RAX: 0000000000000000 RBX: ffffc90000420f80 RCX: 0000000000000000
[   73.375200] RDX: ffff88811ad22d00 RSI: ffff88811ad171e0 RDI: ffff88811ad171e0
[   73.382590] RBP: 0000000000000900 R08: ffffffff82298f28 R09: 0000000000000058
[   73.390008] R10: 0000000000000219 R11: ffffffff82280f40 R12: 0000000000000090
[   73.397356] R13: ffff888102343a40 R14: ffff88810359e0e4 R15: 0000000000000000
[   73.404806] FS:  00007ff38d31d740(0000) GS:ffff88811ad00000(0000) knlGS:0000000000000000
[   73.413129] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   73.419096] CR2: 000055cff35f13f8 CR3: 0000000106391000 CR4: 00000000000406e0
[   73.426565] Call Trace:
[   73.429087]  <TASK>
[   73.431314]  igb_clean_tx_ring+0x43/0x140 [igb]
[   73.436002]  igb_down+0x1d7/0x220 [igb]
[   73.439974]  __igb_close+0x3c/0x120 [igb]
[   73.444118]  igb_xdp+0x10c/0x150 [igb]
[   73.447983]  ? igb_pci_sriov_configure+0x70/0x70 [igb]
[   73.453362]  dev_xdp_install+0xda/0x110
[   73.457371]  dev_xdp_attach+0x1da/0x550
[   73.461369]  do_setlink+0xfd0/0x10f0
[   73.465166]  ? __nla_validate_parse+0x89/0xc70
[   73.469714]  rtnl_setlink+0x11a/0x1e0
[   73.473547]  rtnetlink_rcv_msg+0x145/0x3d0
[   73.477709]  ? rtnl_calcit.isra.0+0x130/0x130
[   73.482258]  netlink_rcv_skb+0x8d/0x110
[   73.486229]  netlink_unicast+0x230/0x340
[   73.490317]  netlink_sendmsg+0x215/0x470
[   73.494395]  __sys_sendto+0x179/0x190
[   73.498268]  ? move_addr_to_user+0x37/0x70
[   73.502547]  ? __sys_getsockname+0x84/0xe0
[   73.506853]  ? netlink_setsockopt+0x1c1/0x4a0
[   73.511349]  ? __sys_setsockopt+0xc8/0x1d0
[   73.515636]  __x64_sys_sendto+0x20/0x30
[   73.519603]  do_syscall_64+0x3b/0x80
[   73.523399]  entry_SYSCALL_64_after_hwframe+0x44/0xae
[   73.528712] RIP: 0033:0x7ff38d41f20c
[   73.551866] RSP: 002b:00007fff3b945a68 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[   73.559640] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff38d41f20c
[   73.567066] RDX: 0000000000000034 RSI: 00007fff3b945b30 RDI: 0000000000000003
[   73.574457] RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
[   73.581852] R10: 0000000000000000 R11: 0000000000000246 R12: 00007fff3b945ab0
[   73.589179] R13: 0000000000000000 R14: 0000000000000003 R15: 00007fff3b945b30
[   73.596545]  </TASK>
[   73.598842] ---[ end trace 0000000000000000 ]---

Fixes: 9cbc948b5a20c ("igb: add XDP support")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/net/ethernet/intel/igb/igb_main.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 68be2976f539..1c26bec7d6fa 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -4819,8 +4819,11 @@ static void igb_clean_tx_ring(struct igb_ring *tx_ring)
 	while (i != tx_ring->next_to_use) {
 		union e1000_adv_tx_desc *eop_desc, *tx_desc;
 
-		/* Free all the Tx ring sk_buffs */
-		dev_kfree_skb_any(tx_buffer->skb);
+		/* Free all the Tx ring sk_buffs or xdp frames */
+		if (tx_buffer->type == IGB_TYPE_SKB)
+			dev_kfree_skb_any(tx_buffer->skb);
+		else
+			xdp_return_frame(tx_buffer->xdpf);
 
 		/* unmap skb header data */
 		dma_unmap_single(tx_ring->dev,
-- 
2.36.1

_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

* Re: [Intel-wired-lan] [PATCH net] igb: fix a use-after-free issue in igb_clean_tx_ring
  2022-06-16 14:13 [Intel-wired-lan] [PATCH net] igb: fix a use-after-free issue in igb_clean_tx_ring Lorenzo Bianconi
@ 2022-06-16 18:26 ` Jesse Brandeburg
  2022-06-17 14:36   ` Jesper Dangaard Brouer
  2022-06-18  3:20 ` patchwork-bot+netdevbpf
  1 sibling, 1 reply; 6+ messages in thread
From: Jesse Brandeburg @ 2022-06-16 18:26 UTC (permalink / raw)
  To: Lorenzo Bianconi, netdev, davem, kuba, pabeni
  Cc: jbrouer, edumazet, intel-wired-lan, magnus.karlsson

On 6/16/2022 7:13 AM, Lorenzo Bianconi wrote:
> Fix the following use-after-free bug in igb_clean_tx_ring routine when
> the NIC is running in XDP mode. The issue can be triggered redirecting
> traffic into the igb NIC and then closing the device while the traffic
> is flowing.

<snip>

> 
> Fixes: 9cbc948b5a20c ("igb: add XDP support")
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>

Thanks Lorenzo, @maintainers this fix seems simple enough you could 
directly apply it without going through intel-wired-lan, once you think 
it's ready.

Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>

_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

* Re: [Intel-wired-lan] [PATCH net] igb: fix a use-after-free issue in igb_clean_tx_ring
  2022-06-16 18:26 ` Jesse Brandeburg
@ 2022-06-17 14:36   ` Jesper Dangaard Brouer
  2022-06-18  3:16     ` Jakub Kicinski
  0 siblings, 1 reply; 6+ messages in thread
From: Jesper Dangaard Brouer @ 2022-06-17 14:36 UTC (permalink / raw)
  To: Jesse Brandeburg, Lorenzo Bianconi, netdev, davem, kuba, pabeni
  Cc: edumazet, intel-wired-lan, brouer, magnus.karlsson



On 16/06/2022 20.26, Jesse Brandeburg wrote:
> On 6/16/2022 7:13 AM, Lorenzo Bianconi wrote:
>> Fix the following use-after-free bug in igb_clean_tx_ring routine when
>> the NIC is running in XDP mode. The issue can be triggered redirecting
>> traffic into the igb NIC and then closing the device while the traffic
>> is flowing.
> 
> <snip>
> 
>>
>> Fixes: 9cbc948b5a20c ("igb: add XDP support")
>> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> 
> Thanks Lorenzo, @maintainers this fix seems simple enough you could 
> directly apply it without going through intel-wired-lan, once you think 
> it's ready.
> 
> Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 

Sounds good to me.

Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>

_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

* Re: [Intel-wired-lan] [PATCH net] igb: fix a use-after-free issue in igb_clean_tx_ring
  2022-06-17 14:36   ` Jesper Dangaard Brouer
@ 2022-06-18  3:16     ` Jakub Kicinski
  2022-06-18  3:30       ` Jakub Kicinski
  0 siblings, 1 reply; 6+ messages in thread
From: Jakub Kicinski @ 2022-06-18  3:16 UTC (permalink / raw)
  To: Jesper Dangaard Brouer, Jesse Brandeburg, Lorenzo Bianconi
  Cc: netdev, edumazet, brouer, intel-wired-lan, pabeni, davem,
	magnus.karlsson

On Fri, 17 Jun 2022 16:36:56 +0200 Jesper Dangaard Brouer wrote:
> On 16/06/2022 20.26, Jesse Brandeburg wrote:
> > On 6/16/2022 7:13 AM, Lorenzo Bianconi wrote:  
> >> Fixes: 9cbc948b5a20c ("igb: add XDP support")
> >> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>  
> > 
> > Thanks Lorenzo, @maintainers this fix seems simple enough you could 
> > directly apply it without going through intel-wired-lan, once you think 
> > it's ready.
> > 
> > Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 
> Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>

It got marked as Awaiting Upstream so the bot won't respond.
It's the commit 3f6a57ee8544 ("igb: fix a use-after-free issue 
in igb_clean_tx_ring") in net now.

Thanks!
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

* Re: [Intel-wired-lan] [PATCH net] igb: fix a use-after-free issue in igb_clean_tx_ring
  2022-06-16 14:13 [Intel-wired-lan] [PATCH net] igb: fix a use-after-free issue in igb_clean_tx_ring Lorenzo Bianconi
  2022-06-16 18:26 ` Jesse Brandeburg
@ 2022-06-18  3:20 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2022-06-18  3:20 UTC (permalink / raw)
  To: Lorenzo Bianconi
  Cc: netdev, jbrouer, edumazet, intel-wired-lan, kuba, pabeni, davem,
	magnus.karlsson

Hello:

This patch was applied to netdev/net.git (master)
by Jakub Kicinski <kuba@kernel.org>:

On Thu, 16 Jun 2022 16:13:20 +0200 you wrote:
> Fix the following use-after-free bug in igb_clean_tx_ring routine when
> the NIC is running in XDP mode. The issue can be triggered redirecting
> traffic into the igb NIC and then closing the device while the traffic
> is flowing.
> 
> [   73.322719] CPU: 1 PID: 487 Comm: xdp_redirect Not tainted 5.18.3-apu2 #9
> [   73.330639] Hardware name: PC Engines APU2/APU2, BIOS 4.0.7 02/28/2017
> [   73.337434] RIP: 0010:refcount_warn_saturate+0xa7/0xf0
> [   73.362283] RSP: 0018:ffffc9000081f798 EFLAGS: 00010282
> [   73.367761] RAX: 0000000000000000 RBX: ffffc90000420f80 RCX: 0000000000000000
> [   73.375200] RDX: ffff88811ad22d00 RSI: ffff88811ad171e0 RDI: ffff88811ad171e0
> [   73.382590] RBP: 0000000000000900 R08: ffffffff82298f28 R09: 0000000000000058
> [   73.390008] R10: 0000000000000219 R11: ffffffff82280f40 R12: 0000000000000090
> [   73.397356] R13: ffff888102343a40 R14: ffff88810359e0e4 R15: 0000000000000000
> [   73.404806] FS:  00007ff38d31d740(0000) GS:ffff88811ad00000(0000) knlGS:0000000000000000
> [   73.413129] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [   73.419096] CR2: 000055cff35f13f8 CR3: 0000000106391000 CR4: 00000000000406e0
> [   73.426565] Call Trace:
> [   73.429087]  <TASK>
> [   73.431314]  igb_clean_tx_ring+0x43/0x140 [igb]
> [   73.436002]  igb_down+0x1d7/0x220 [igb]
> [   73.439974]  __igb_close+0x3c/0x120 [igb]
> [   73.444118]  igb_xdp+0x10c/0x150 [igb]
> [   73.447983]  ? igb_pci_sriov_configure+0x70/0x70 [igb]
> [   73.453362]  dev_xdp_install+0xda/0x110
> [   73.457371]  dev_xdp_attach+0x1da/0x550
> [   73.461369]  do_setlink+0xfd0/0x10f0
> [   73.465166]  ? __nla_validate_parse+0x89/0xc70
> [   73.469714]  rtnl_setlink+0x11a/0x1e0
> [   73.473547]  rtnetlink_rcv_msg+0x145/0x3d0
> [   73.477709]  ? rtnl_calcit.isra.0+0x130/0x130
> [   73.482258]  netlink_rcv_skb+0x8d/0x110
> [   73.486229]  netlink_unicast+0x230/0x340
> [   73.490317]  netlink_sendmsg+0x215/0x470
> [   73.494395]  __sys_sendto+0x179/0x190
> [   73.498268]  ? move_addr_to_user+0x37/0x70
> [   73.502547]  ? __sys_getsockname+0x84/0xe0
> [   73.506853]  ? netlink_setsockopt+0x1c1/0x4a0
> [   73.511349]  ? __sys_setsockopt+0xc8/0x1d0
> [   73.515636]  __x64_sys_sendto+0x20/0x30
> [   73.519603]  do_syscall_64+0x3b/0x80
> [   73.523399]  entry_SYSCALL_64_after_hwframe+0x44/0xae
> [   73.528712] RIP: 0033:0x7ff38d41f20c
> [   73.551866] RSP: 002b:00007fff3b945a68 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
> [   73.559640] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff38d41f20c
> [   73.567066] RDX: 0000000000000034 RSI: 00007fff3b945b30 RDI: 0000000000000003
> [   73.574457] RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
> [   73.581852] R10: 0000000000000000 R11: 0000000000000246 R12: 00007fff3b945ab0
> [   73.589179] R13: 0000000000000000 R14: 0000000000000003 R15: 00007fff3b945b30
> [   73.596545]  </TASK>
> [   73.598842] ---[ end trace 0000000000000000 ]---
> 
> [...]

Here is the summary with links:
  - [net] igb: fix a use-after-free issue in igb_clean_tx_ring
    https://git.kernel.org/netdev/net/c/3f6a57ee8544

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html


_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

* Re: [Intel-wired-lan] [PATCH net] igb: fix a use-after-free issue in igb_clean_tx_ring
  2022-06-18  3:16     ` Jakub Kicinski
@ 2022-06-18  3:30       ` Jakub Kicinski
  0 siblings, 0 replies; 6+ messages in thread
From: Jakub Kicinski @ 2022-06-18  3:30 UTC (permalink / raw)
  To: Jesper Dangaard Brouer, Jesse Brandeburg, Lorenzo Bianconi
  Cc: netdev, edumazet, brouer, intel-wired-lan, pabeni, davem,
	magnus.karlsson

On Fri, 17 Jun 2022 20:16:44 -0700 Jakub Kicinski wrote:
> It got marked as Awaiting Upstream so the bot won't respond.

Ooo, the bot got changed!
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

end of thread, other threads:[~2022-06-18  3:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-16 14:13 [Intel-wired-lan] [PATCH net] igb: fix a use-after-free issue in igb_clean_tx_ring Lorenzo Bianconi
2022-06-16 18:26 ` Jesse Brandeburg
2022-06-17 14:36   ` Jesper Dangaard Brouer
2022-06-18  3:16     ` Jakub Kicinski
2022-06-18  3:30       ` Jakub Kicinski
2022-06-18  3:20 ` patchwork-bot+netdevbpf

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).