All of lore.kernel.org
 help / color / mirror / Atom feed
From: Charalampos Mitrodimas <charmitro@posteo.net>
To: Tung Quang Nguyen <tung.quang.nguyen@est.tech>
Cc: Jon Maloy <jmaloy@redhat.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Simon Horman <horms@kernel.org>,
	Wang Liang <wangliang74@huawei.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"tipc-discussion@lists.sourceforge.net"
	<tipc-discussion@lists.sourceforge.net>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"syzbot+f0c4a4aba757549ae26c@syzkaller.appspotmail.com"
	<syzbot+f0c4a4aba757549ae26c@syzkaller.appspotmail.com>
Subject: Re: [PATCH net] net: tipc: fix refcount warning in tipc_aead_encrypt
Date: Tue, 27 May 2025 16:39:22 +0000	[thread overview]
Message-ID: <87bjreuhw8.fsf@posteo.net> (raw)
In-Reply-To: <DBBP189MB13234B89CBA74E8127527051C664A@DBBP189MB1323.EURP189.PROD.OUTLOOK.COM>


Tung Quang Nguyen <tung.quang.nguyen@est.tech> writes:

>>Subject: [PATCH net] net: tipc: fix refcount warning in tipc_aead_encrypt
>>
>>syzbot reported a refcount warning [1] caused by calling get_net() on a
>>network namespace that is being destroyed (refcount=0). This happens when a
>>TIPC discovery timer fires during network namespace cleanup.
>>
>>The recently added get_net() call in commit e279024617134 ("net/tipc:
>>fix slab-use-after-free Read in tipc_aead_encrypt_done") attempts to hold a
>>reference to the network namespace. However, if the namespace is already
>>being destroyed, its refcount might be zero, leading to the use-after-free
>>warning.
>>
>>Replace get_net() with maybe_get_net(), which safely checks if the refcount is
>>non-zero before incrementing it. If the namespace is being destroyed, return -
>>ENXIO early, after releasing the bearer reference.
>>
>>[1]:
>>https://lore.kernel.org/all/68342b55.a70a0220.253bc2.0091.GAE@google.com
>>/T/#m12019cf9ae77e1954f666914640efa36d52704a2
>>
>>Reported-by: syzbot+f0c4a4aba757549ae26c@syzkaller.appspotmail.com
>>Closes:
>>https://lore.kernel.org/all/68342b55.a70a0220.253bc2.0091.GAE@google.com
>>/T/#m12019cf9ae77e1954f666914640efa36d52704a2
>>Fixes: e27902461713 ("net/tipc: fix slab-use-after-free Read in
>>tipc_aead_encrypt_done")
>>Signed-off-by: Charalampos Mitrodimas <charmitro@posteo.net>
>>---
>> net/tipc/crypto.c | 6 +++++-
>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>
>>diff --git a/net/tipc/crypto.c b/net/tipc/crypto.c index
>>8584893b478510dc1ddda321ed06054de327609b..49916f983fe5e1d484779451
>>04fe5fc589257533 100644
>>--- a/net/tipc/crypto.c
>>+++ b/net/tipc/crypto.c
>>@@ -818,7 +818,11 @@ static int tipc_aead_encrypt(struct tipc_aead *aead,
>>struct sk_buff *skb,
>> 	}
>>
>> 	/* Get net to avoid freed tipc_crypto when delete namespace */
>>-	get_net(aead->crypto->net);
>>+	if (!maybe_get_net(aead->crypto->net)) {
>>+		tipc_bearer_put(b);
>>+		rc = -ENXIO;
> -ENODEV should be used instead as we also use it for bearer ref count. Thus, caller of tipc_aead_encrypt() does not need to care about handling new error code.

Hi,

Thanks for the review!

Addressed in v2.

C. Mitrodimas

>>+		goto exit;
>>+	}
>>
>> 	/* Now, do encrypt */
>> 	rc = crypto_aead_encrypt(req);


      reply	other threads:[~2025-05-27 16:40 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-26 19:38 [PATCH net] net: tipc: fix refcount warning in tipc_aead_encrypt Charalampos Mitrodimas
2025-05-27  3:38 ` Tung Quang Nguyen
2025-05-27 16:39   ` Charalampos Mitrodimas [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87bjreuhw8.fsf@posteo.net \
    --to=charmitro@posteo.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=jmaloy@redhat.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=syzbot+f0c4a4aba757549ae26c@syzkaller.appspotmail.com \
    --cc=tipc-discussion@lists.sourceforge.net \
    --cc=tung.quang.nguyen@est.tech \
    --cc=wangliang74@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.