linux-s390.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close()
@ 2026-09-10 16:29 Alexandra Winter
  2026-09-11 16:29 ` sashiko-bot
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Alexandra Winter @ 2026-09-10 16:29 UTC (permalink / raw)
  To: David Miller, Jakub Kicinski, Paolo Abeni, Eric Dumazet,
	Andrew Lunn
  Cc: Thorsten Winkler, Bryam Vargas, netdev, linux-s390, linux-kernel,
	Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, Simon Horman

iucv_sock_close() acquires lock_sock(sk) and then, when the socket is in
IUCV_LISTEN state, calls iucv_sock_cleanup_listen() which acquires
lock_sock(child_sk) for each pending child socket. Moreover
iucv_sock_close(child_sk) is called on the pending child sockets.

Avoid lockdep warning by using lock_sock_nested() in iucv_sock_close().
Split off __iucv_sock_close(), so iucv_sock_cleanup_listen() can call it
without nesting.

This is a missing lockdep annotation - not a real deadlock.

Example warning:
[ 6690.906930] ============================================
[ 6690.906935] WARNING: possible recursive locking detected
[ 6690.906942] 7.3.0-rc1net_KCSAN_KASAN-00240-g641d03105cc0 #23 Not tainted
[ 6690.906948] --------------------------------------------
[ 6690.906953] afiucv_test_loc/5183 is trying to acquire lock:
[ 6690.906959] 000601ad13f20a78 (sk_lock-IUCV){+.+.}-{0:0}, at: iucv_accept_dequeue+0xdc/0x340 [af_iucv]
[ 6690.906984]
               but task is already holding lock:
[ 6690.906989] 000601ad1c115278 (sk_lock-IUCV){+.+.}-{0:0}, at: iucv_sock_close+0x82/0x7d0 [af_iucv]
[ 6690.907006]
               other info that might help us debug this:
[ 6690.907010]  Possible unsafe locking scenario:

[ 6690.907014]        CPU0
[ 6690.907018]        ----
[ 6690.907021]   lock(sk_lock-IUCV);
[ 6690.907028]   lock(sk_lock-IUCV);
[ 6690.907034]
                *** DEADLOCK ***

[ 6690.907038]  May be due to missing lock nesting notation

[ 6690.907043] locks held by afiucv_test_loc/5183: 2, last CPU#0:
[ 6690.907085]  #0: 000601ad137a5550 (&sb->s_type->i_mutex_key#12){+.+.}-{3:3}, at: __sock_release+0x7e/0x230
[ 6690.907109]  #1: 000601ad1c115278 (sk_lock-IUCV){+.+.}-{0:0}, at: iucv_sock_close+0x82/0x7d0 [af_iucv]
[ 6690.907127]
               stack backtrace:
[ 6690.907135] CPU: 0 UID: 0 PID: 5183 Comm: afiucv_test_loc Kdump: loaded Not tainted 7.3.0-rc1net_KCSAN_KASAN-00240-g641d03105cc0 #23 PREEMPT
[ 6690.907140] Hardware name: IBM 8561 T01 703 (z/VM 7.4.0)
[ 6690.907142] Call Trace:
[ 6690.907144]  [<00061ab555fd6208>] dump_stack_lvl+0xe8/0x140
[ 6690.907151]  [<00061ab55623a110>] print_deadlock_bug+0x340/0x350
[ 6690.907156]  [<00061ab55623f768>] __lock_acquire+0x11b8/0x15d0
[ 6690.907159]  [<00061ab55623fc9c>] lock_acquire.part.0+0x11c/0x290
[ 6690.907162]  [<00061ab55623fec4>] lock_acquire+0xb4/0x1e0
[ 6690.907164]  [<00061ab5580d6b96>] lock_sock_nested+0x46/0xf0
[ 6690.907167]  [<00061ab4d66e38dc>] iucv_accept_dequeue+0xdc/0x340 [af_iucv]
[ 6690.907171]  [<00061ab4d66e541c>] iucv_sock_close+0xdc/0x7d0 [af_iucv]
[ 6690.907174]  [<00061ab4d66e5b62>] iucv_sock_release+0x52/0x130 [af_iucv]
[ 6690.907177]  [<00061ab5580c5b24>] __sock_release+0xa4/0x230
[ 6690.907180]  [<00061ab5580c5cdc>] sock_close+0x2c/0x40
[ 6690.907183]  [<00061ab556ac7a00>] __fput+0x2f0/0x880
[ 6690.907187]  [<00061ab556ac8cc0>] fput_close_sync+0xd0/0x1c0
[ 6690.907189]  [<00061ab556abbc70>] __s390x_sys_close+0x90/0xf0
[ 6690.907192]  [<00061ab55894df0e>] __do_syscall+0x1be/0x5a0
[ 6690.907196]  [<00061ab558976a7a>] system_call+0x72/0x90
[ 6690.907200] INFO: lockdep is turned off.

Signed-off-by: Alexandra Winter <wintera@linux.ibm.com>
---
 net/iucv/af_iucv.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
index db261ecd19af..dc906f5f7c42 100644
--- a/net/iucv/af_iucv.c
+++ b/net/iucv/af_iucv.c
@@ -91,6 +91,7 @@ static struct sock *iucv_accept_dequeue(struct sock *parent,
 					struct socket *newsock);
 static void iucv_sock_kill(struct sock *sk);
 static void iucv_sock_close(struct sock *sk);
+static void __iucv_sock_close(struct sock *sk);
 
 static void afiucv_hs_callback_txnotify(struct sock *sk, enum iucv_tx_notify);
 
@@ -302,7 +303,9 @@ static void iucv_sock_cleanup_listen(struct sock *parent)
 
 	/* Close non-accepted connections */
 	while ((sk = iucv_accept_dequeue(parent, NULL))) {
-		iucv_sock_close(sk);
+		lock_sock(sk);
+		__iucv_sock_close(sk);
+		release_sock(sk);
 		iucv_sock_kill(sk);
 	}
 
@@ -394,15 +397,16 @@ static int iucv_send_ctrl(struct sock *sk, u8 flags)
 	return err;
 }
 
-/* Close an IUCV socket */
-static void iucv_sock_close(struct sock *sk)
+/**
+ * __iucv_sock_close() - close socket, caller holds lock_sock(sk)
+ * @sk: network socket
+ */
+static void __iucv_sock_close(struct sock *sk)
 {
 	struct iucv_sock *iucv = iucv_sk(sk);
 	unsigned long timeo;
 	int err = 0;
 
-	lock_sock(sk);
-
 	switch (sk->sk_state) {
 	case IUCV_LISTEN:
 		iucv_sock_cleanup_listen(sk);
@@ -454,7 +458,12 @@ static void iucv_sock_close(struct sock *sk)
 
 	/* mark socket for deletion by iucv_sock_kill() */
 	sock_set_flag(sk, SOCK_ZAPPED);
+}
 
+static void iucv_sock_close(struct sock *sk)
+{
+	lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
+	__iucv_sock_close(sk);
 	release_sock(sk);
 }
 
-- 
2.53.0


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

* Re: [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close()
  2026-09-10 16:29 [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close() Alexandra Winter
@ 2026-09-11 16:29 ` sashiko-bot
  2026-09-13 13:42   ` Simon Horman
  2026-09-13 13:42 ` Simon Horman
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: sashiko-bot @ 2026-09-11 16:29 UTC (permalink / raw)
  To: Alexandra Winter
  Cc: Heiko Carstens, linux-s390, Christian Borntraeger, Vasily Gorbik,
	Alexander Gordeev

Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:

Pre-existing issues:
- [Critical] Lockless traversal of accept_q causes list corruption and use-after-free due to concurrent modifications from softirq context.
- [High] Newly allocated sockets are permanently leaked on error paths because iucv_sock_kill() returns early if SOCK_ZAPPED is not set.
- [High] Child socket leak in iucv_sock_cleanup_listen due to late state update leaving a race window.
- [High] Unprotected state modifications in iucv_callback_connack cause state desynchronization.
--

commit dd0ad2a384eeaa590848b51235abdb105f4560db
Author: Alexandra Winter <wintera@linux.ibm.com>

net/iucv: Add lock nesting annotation in iucv_sock_close()

This commit splits off __iucv_sock_close() to allow it to be called
without lock nesting. It also adds a lockdep annotation to
iucv_sock_close() to avoid a false-positive recursive locking warning.

> diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
> index db261ecd19af1..dc906f5f7c42d 100644
> --- a/net/iucv/af_iucv.c
> +++ b/net/iucv/af_iucv.c

[ ... ]

> @@ -302,7 +303,9 @@ static void iucv_sock_cleanup_listen(struct sock *parent)
>  
>  	/* Close non-accepted connections */
>  	while ((sk = iucv_accept_dequeue(parent, NULL))) {

[Severity: Critical]
This is a pre-existing issue, but I have a question about how
iucv_accept_dequeue() is interacting with the softirq context here.

Does lockless traversal of accept_q cause list corruption or use-after-free
due to concurrent modifications from softirq context?

iucv_accept_dequeue() (and iucv_accept_poll()) traverses the accept_q list
using list_for_each_entry_safe() without holding accept_q_lock:

net/iucv/af_iucv.c:iucv_accept_dequeue() {
    ...
	list_for_each_entry_safe(isk, n, &iucv_sk(parent)->accept_q, accept_q) {
    ...
}

Concurrently, an incoming connection triggers iucv_callback_connreq() in
softirq, which acquires accept_q_lock via iucv_accept_enqueue() and modifies
the list using list_add_tail(). Since list_for_each_entry_safe() is not safe
against concurrent modifications from another context, does this result in a
data race and list corruption when poll() or accept() are called?

> -		iucv_sock_close(sk);
> +		lock_sock(sk);
> +		__iucv_sock_close(sk);
> +		release_sock(sk);
>  		iucv_sock_kill(sk);
>  	}

[Severity: High]
This isn't a bug introduced by this patch, but looking at the loop above,
could this leave a race window where child sockets are permanently leaked?

iucv_sock_cleanup_listen() drains the accept_q completely, but since it is
executed under lock_sock(parent) (which releases the slock spinlock), could
a softirq executing iucv_callback_connreq() concurrently enqueue a new
socket?

Since parent->sk_state = IUCV_CLOSED is updated after the loop finishes:

net/iucv/af_iucv.c:iucv_sock_cleanup_listen() {
    ...
	while ((sk = iucv_accept_dequeue(parent, NULL))) {
		lock_sock(sk);
		__iucv_sock_close(sk);
		release_sock(sk);
		iucv_sock_kill(sk);
	}

	parent->sk_state = IUCV_CLOSED;
}

Can a softirq successfully enqueue a new child socket to accept_q just as the
loop terminates, leaving it leaked forever since iucv_sock_destruct() does
not purge accept_q?


[Severity: High]
This is another pre-existing issue, but does iucv_sock_kill() silently leak
newly allocated sockets on error paths?

In error paths, newly allocated sockets are passed to iucv_sock_kill():

net/iucv/af_iucv.c:iucv_callback_connreq() {
    ...
	if (err) {
		iucv_sever_path(nsk, 1);
		iucv_sock_kill(nsk);
		goto fail;
	}
    ...
}

And also in afiucv_hs_callback_syn():

net/iucv/af_iucv.c:afiucv_hs_callback_syn() {
    ...
	err = dev_queue_xmit(skb);
	if (!err) {
		...
	} else
		iucv_sock_kill(nsk);
    ...
}

Since iucv_sock_alloc() creates sockets with the SOCK_ZAPPED flag cleared,
and iucv_sock_kill() returns early if !sock_flag(sk, SOCK_ZAPPED), doesn't
this mean the socket is left forever in iucv_sk_list without its reference
being dropped? Could this allow a remote unauthenticated user to cause a
Denial of Service via memory exhaustion by spamming SYN requests?

>  
> @@ -394,15 +397,16 @@ static int iucv_send_ctrl(struct sock *sk, u8 flags)
>  	return err;
>  }
>  
> -/* Close an IUCV socket */
> -static void iucv_sock_close(struct sock *sk)
> +/**
> + * __iucv_sock_close() - close socket, caller holds lock_sock(sk)
> + * @sk: network socket
> + */
> +static void __iucv_sock_close(struct sock *sk)
>  {
>  	struct iucv_sock *iucv = iucv_sk(sk);
>  	unsigned long timeo;
>  	int err = 0;
>  
> -	lock_sock(sk);
> -
>  	switch (sk->sk_state) {

[Severity: High]
This isn't a bug introduced by this patch, but could unprotected state
modifications in iucv_callback_connack() cause state desynchronization
and resource leaks?

iucv_callback_connack() executes in interrupt context when the peer accepts
a connection, and it directly modifies the socket state without acquiring
bh_lock_sock(sk):

net/iucv/af_iucv.c:iucv_callback_connack() {
    ...
	sk->sk_state = IUCV_CONNECTED;
	sk->sk_state_change(sk);
    ...
}

Since this write is unprotected, can it race with other operations (like
__iucv_sock_close() checking sk->sk_state here) that are concurrently
transitioning the socket to IUCV_CLOSING or IUCV_CLOSED under lock_sock(sk)?
Would this blindly overwrite the state with IUCV_CONNECTED during a
concurrent teardown sequence, leaving the socket in an inconsistent state
forever?

>  	case IUCV_LISTEN:
>  		iucv_sock_cleanup_listen(sk);

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260910162919.2100124-1-wintera@linux.ibm.com?part=1

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

* Re: [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close()
  2026-09-11 16:29 ` sashiko-bot
@ 2026-09-13 13:42   ` Simon Horman
  2026-09-13 16:12     ` Alexandra Winter
  0 siblings, 1 reply; 8+ messages in thread
From: Simon Horman @ 2026-09-13 13:42 UTC (permalink / raw)
  To: sashiko-reviews
  Cc: Alexandra Winter, Heiko Carstens, linux-s390,
	Christian Borntraeger, Vasily Gorbik, Alexander Gordeev

On Fri, Sep 11, 2026 at 04:29:45PM +0000, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
> 
> Pre-existing issues:
> - [Critical] Lockless traversal of accept_q causes list corruption and use-after-free due to concurrent modifications from softirq context.
> - [High] Newly allocated sockets are permanently leaked on error paths because iucv_sock_kill() returns early if SOCK_ZAPPED is not set.
> - [High] Child socket leak in iucv_sock_cleanup_listen due to late state update leaving a race window.
> - [High] Unprotected state modifications in iucv_callback_connack cause state desynchronization.

My opinion is that the issues above are all orthogonal to this patch
and should not block progress of it.

...

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

* Re: [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close()
  2026-09-10 16:29 [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close() Alexandra Winter
  2026-09-11 16:29 ` sashiko-bot
@ 2026-09-13 13:42 ` Simon Horman
  2026-09-15  1:53 ` Jakub Kicinski
  2026-09-15  2:00 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 8+ messages in thread
From: Simon Horman @ 2026-09-13 13:42 UTC (permalink / raw)
  To: Alexandra Winter
  Cc: David Miller, Jakub Kicinski, Paolo Abeni, Eric Dumazet,
	Andrew Lunn, Thorsten Winkler, Bryam Vargas, netdev, linux-s390,
	linux-kernel, Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle

On Thu, Sep 10, 2026 at 06:29:19PM +0200, Alexandra Winter wrote:
> iucv_sock_close() acquires lock_sock(sk) and then, when the socket is in
> IUCV_LISTEN state, calls iucv_sock_cleanup_listen() which acquires
> lock_sock(child_sk) for each pending child socket. Moreover
> iucv_sock_close(child_sk) is called on the pending child sockets.
> 
> Avoid lockdep warning by using lock_sock_nested() in iucv_sock_close().
> Split off __iucv_sock_close(), so iucv_sock_cleanup_listen() can call it
> without nesting.
> 
> This is a missing lockdep annotation - not a real deadlock.
> 
> Example warning:
> [ 6690.906930] ============================================
> [ 6690.906935] WARNING: possible recursive locking detected
> [ 6690.906942] 7.3.0-rc1net_KCSAN_KASAN-00240-g641d03105cc0 #23 Not tainted
> [ 6690.906948] --------------------------------------------
> [ 6690.906953] afiucv_test_loc/5183 is trying to acquire lock:
> [ 6690.906959] 000601ad13f20a78 (sk_lock-IUCV){+.+.}-{0:0}, at: iucv_accept_dequeue+0xdc/0x340 [af_iucv]
> [ 6690.906984]
>                but task is already holding lock:
> [ 6690.906989] 000601ad1c115278 (sk_lock-IUCV){+.+.}-{0:0}, at: iucv_sock_close+0x82/0x7d0 [af_iucv]
> [ 6690.907006]
>                other info that might help us debug this:
> [ 6690.907010]  Possible unsafe locking scenario:
> 
> [ 6690.907014]        CPU0
> [ 6690.907018]        ----
> [ 6690.907021]   lock(sk_lock-IUCV);
> [ 6690.907028]   lock(sk_lock-IUCV);
> [ 6690.907034]
>                 *** DEADLOCK ***
> 
> [ 6690.907038]  May be due to missing lock nesting notation
> 
> [ 6690.907043] locks held by afiucv_test_loc/5183: 2, last CPU#0:
> [ 6690.907085]  #0: 000601ad137a5550 (&sb->s_type->i_mutex_key#12){+.+.}-{3:3}, at: __sock_release+0x7e/0x230
> [ 6690.907109]  #1: 000601ad1c115278 (sk_lock-IUCV){+.+.}-{0:0}, at: iucv_sock_close+0x82/0x7d0 [af_iucv]
> [ 6690.907127]
>                stack backtrace:
> [ 6690.907135] CPU: 0 UID: 0 PID: 5183 Comm: afiucv_test_loc Kdump: loaded Not tainted 7.3.0-rc1net_KCSAN_KASAN-00240-g641d03105cc0 #23 PREEMPT
> [ 6690.907140] Hardware name: IBM 8561 T01 703 (z/VM 7.4.0)
> [ 6690.907142] Call Trace:
> [ 6690.907144]  [<00061ab555fd6208>] dump_stack_lvl+0xe8/0x140
> [ 6690.907151]  [<00061ab55623a110>] print_deadlock_bug+0x340/0x350
> [ 6690.907156]  [<00061ab55623f768>] __lock_acquire+0x11b8/0x15d0
> [ 6690.907159]  [<00061ab55623fc9c>] lock_acquire.part.0+0x11c/0x290
> [ 6690.907162]  [<00061ab55623fec4>] lock_acquire+0xb4/0x1e0
> [ 6690.907164]  [<00061ab5580d6b96>] lock_sock_nested+0x46/0xf0
> [ 6690.907167]  [<00061ab4d66e38dc>] iucv_accept_dequeue+0xdc/0x340 [af_iucv]
> [ 6690.907171]  [<00061ab4d66e541c>] iucv_sock_close+0xdc/0x7d0 [af_iucv]
> [ 6690.907174]  [<00061ab4d66e5b62>] iucv_sock_release+0x52/0x130 [af_iucv]
> [ 6690.907177]  [<00061ab5580c5b24>] __sock_release+0xa4/0x230
> [ 6690.907180]  [<00061ab5580c5cdc>] sock_close+0x2c/0x40
> [ 6690.907183]  [<00061ab556ac7a00>] __fput+0x2f0/0x880
> [ 6690.907187]  [<00061ab556ac8cc0>] fput_close_sync+0xd0/0x1c0
> [ 6690.907189]  [<00061ab556abbc70>] __s390x_sys_close+0x90/0xf0
> [ 6690.907192]  [<00061ab55894df0e>] __do_syscall+0x1be/0x5a0
> [ 6690.907196]  [<00061ab558976a7a>] system_call+0x72/0x90
> [ 6690.907200] INFO: lockdep is turned off.
> 
> Signed-off-by: Alexandra Winter <wintera@linux.ibm.com>

Reviewed-by: Simon Horman <horms@kernel.org>


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

* Re: [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close()
  2026-09-13 13:42   ` Simon Horman
@ 2026-09-13 16:12     ` Alexandra Winter
  0 siblings, 0 replies; 8+ messages in thread
From: Alexandra Winter @ 2026-09-13 16:12 UTC (permalink / raw)
  To: Simon Horman, sashiko-reviews
  Cc: Heiko Carstens, linux-s390, Christian Borntraeger, Vasily Gorbik,
	Alexander Gordeev



On 13.09.26 15:42, Simon Horman wrote:
> On Fri, Sep 11, 2026 at 04:29:45PM +0000, sashiko-bot@kernel.org wrote:
>> Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
>>
>> Pre-existing issues:
>> - [Critical] Lockless traversal of accept_q causes list corruption and use-after-free due to concurrent modifications from softirq context.
>> - [High] Newly allocated sockets are permanently leaked on error paths because iucv_sock_kill() returns early if SOCK_ZAPPED is not set.
>> - [High] Child socket leak in iucv_sock_cleanup_listen due to late state update leaving a race window.
>> - [High] Unprotected state modifications in iucv_callback_connack cause state desynchronization.
> 
> My opinion is that the issues above are all orthogonal to this patch
> and should not block progress of it.
> 
> ...

I agree. I think all of them were reported already by Bryam Vargas [1]
I need to get this one out of the way, so I can reproduce the real issues.


Linkk: https://lore.kernel.org/netdev/20260724222917.134769-1-hexlabsecurity@proton.me/ [1]

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

* Re: [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close()
  2026-09-10 16:29 [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close() Alexandra Winter
  2026-09-11 16:29 ` sashiko-bot
  2026-09-13 13:42 ` Simon Horman
@ 2026-09-15  1:53 ` Jakub Kicinski
  2026-09-15 15:11   ` Alexandra Winter
  2026-09-15  2:00 ` patchwork-bot+netdevbpf
  3 siblings, 1 reply; 8+ messages in thread
From: Jakub Kicinski @ 2026-09-15  1:53 UTC (permalink / raw)
  To: Alexandra Winter
  Cc: David Miller, Paolo Abeni, Eric Dumazet, Andrew Lunn,
	Thorsten Winkler, Bryam Vargas, netdev, linux-s390, linux-kernel,
	Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, Simon Horman

On Thu, 10 Sep 2026 18:29:19 +0200 Alexandra Winter wrote:
>  static void iucv_sock_close(struct sock *sk);

deleted this line when applying per clashiko

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

* Re: [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close()
  2026-09-10 16:29 [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close() Alexandra Winter
                   ` (2 preceding siblings ...)
  2026-09-15  1:53 ` Jakub Kicinski
@ 2026-09-15  2:00 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 8+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-09-15  2:00 UTC (permalink / raw)
  To: Alexandra Winter
  Cc: davem, kuba, pabeni, edumazet, andrew+netdev, twinkler,
	hexlabsecurity, netdev, linux-s390, linux-kernel, hca, gor,
	agordeev, borntraeger, svens, horms

Hello:

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

On Thu, 10 Sep 2026 18:29:19 +0200 you wrote:
> iucv_sock_close() acquires lock_sock(sk) and then, when the socket is in
> IUCV_LISTEN state, calls iucv_sock_cleanup_listen() which acquires
> lock_sock(child_sk) for each pending child socket. Moreover
> iucv_sock_close(child_sk) is called on the pending child sockets.
> 
> Avoid lockdep warning by using lock_sock_nested() in iucv_sock_close().
> Split off __iucv_sock_close(), so iucv_sock_cleanup_listen() can call it
> without nesting.
> 
> [...]

Here is the summary with links:
  - [net-next] net/iucv: Add lock nesting annotation in iucv_sock_close()
    https://git.kernel.org/netdev/net-next/c/aa5ec571b93f

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] 8+ messages in thread

* Re: [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close()
  2026-09-15  1:53 ` Jakub Kicinski
@ 2026-09-15 15:11   ` Alexandra Winter
  0 siblings, 0 replies; 8+ messages in thread
From: Alexandra Winter @ 2026-09-15 15:11 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: David Miller, Paolo Abeni, Eric Dumazet, Andrew Lunn,
	Thorsten Winkler, Bryam Vargas, netdev, linux-s390, linux-kernel,
	Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, Simon Horman



On 15.09.26 03:53, Jakub Kicinski wrote:
> On Thu, 10 Sep 2026 18:29:19 +0200 Alexandra Winter wrote:
>>  static void iucv_sock_close(struct sock *sk);
> 
> deleted this line when applying per clashiko

Ack, thank you Jakub.

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

end of thread, other threads:[~2026-09-15 15:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-10 16:29 [PATCH net-next] net/iucv: Add lock nesting annotation in iucv_sock_close() Alexandra Winter
2026-09-11 16:29 ` sashiko-bot
2026-09-13 13:42   ` Simon Horman
2026-09-13 16:12     ` Alexandra Winter
2026-09-13 13:42 ` Simon Horman
2026-09-15  1:53 ` Jakub Kicinski
2026-09-15 15:11   ` Alexandra Winter
2026-09-15  2:00 ` 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).