All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net] nfc: nci: free rx_data_reassembly skb on NCI device cleanup
@ 2024-01-25  9:53 Fedor Pchelkin
  2024-01-29 12:10 ` patchwork-bot+netdevbpf
  0 siblings, 1 reply; 2+ messages in thread
From: Fedor Pchelkin @ 2024-01-25  9:53 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Fedor Pchelkin, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Jeremy Cline, Simon Horman, Breno Leitao,
	Ilan Elias, John W. Linville, netdev, linux-kernel,
	Alexey Khoroshilov, lvc-project, stable,
	syzbot+6b7c68d9c21e4ee4251b

rx_data_reassembly skb is stored during NCI data exchange for processing
fragmented packets. It is dropped only when the last fragment is processed
or when an NTF packet with NCI_OP_RF_DEACTIVATE_NTF opcode is received.
However, the NCI device may be deallocated before that which leads to skb
leak.

As by design the rx_data_reassembly skb is bound to the NCI device and
nothing prevents the device to be freed before the skb is processed in
some way and cleaned, free it on the NCI device cleanup.

Found by Linux Verification Center (linuxtesting.org) with Syzkaller.

Fixes: 6a2968aaf50c ("NFC: basic NCI protocol implementation")
Cc: stable@vger.kernel.org
Reported-by: syzbot+6b7c68d9c21e4ee4251b@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/lkml/000000000000f43987060043da7b@google.com/
Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
---
 net/nfc/nci/core.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c
index 97348cedb16b..cdad47b140fa 100644
--- a/net/nfc/nci/core.c
+++ b/net/nfc/nci/core.c
@@ -1208,6 +1208,10 @@ void nci_free_device(struct nci_dev *ndev)
 {
 	nfc_free_device(ndev->nfc_dev);
 	nci_hci_deallocate(ndev);
+
+	/* drop partial rx data packet if present */
+	if (ndev->rx_data_reassembly)
+		kfree_skb(ndev->rx_data_reassembly);
 	kfree(ndev);
 }
 EXPORT_SYMBOL(nci_free_device);
-- 
2.43.0


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

* Re: [PATCH net] nfc: nci: free rx_data_reassembly skb on NCI device cleanup
  2024-01-25  9:53 [PATCH net] nfc: nci: free rx_data_reassembly skb on NCI device cleanup Fedor Pchelkin
@ 2024-01-29 12:10 ` patchwork-bot+netdevbpf
  0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-01-29 12:10 UTC (permalink / raw)
  To: Fedor Pchelkin
  Cc: krzysztof.kozlowski, davem, edumazet, kuba, pabeni, jeremy,
	horms, leitao, ilane, linville, netdev, linux-kernel,
	khoroshilov, lvc-project, stable, syzbot+6b7c68d9c21e4ee4251b

Hello:

This patch was applied to netdev/net.git (main)
by David S. Miller <davem@davemloft.net>:

On Thu, 25 Jan 2024 12:53:09 +0300 you wrote:
> rx_data_reassembly skb is stored during NCI data exchange for processing
> fragmented packets. It is dropped only when the last fragment is processed
> or when an NTF packet with NCI_OP_RF_DEACTIVATE_NTF opcode is received.
> However, the NCI device may be deallocated before that which leads to skb
> leak.
> 
> As by design the rx_data_reassembly skb is bound to the NCI device and
> nothing prevents the device to be freed before the skb is processed in
> some way and cleaned, free it on the NCI device cleanup.
> 
> [...]

Here is the summary with links:
  - [net] nfc: nci: free rx_data_reassembly skb on NCI device cleanup
    https://git.kernel.org/netdev/net/c/bfb007aebe6b

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



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

end of thread, other threads:[~2024-01-29 12:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-25  9:53 [PATCH net] nfc: nci: free rx_data_reassembly skb on NCI device cleanup Fedor Pchelkin
2024-01-29 12:10 ` patchwork-bot+netdevbpf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.