Thanks for the feedbacks. Good to know I have not used lockdep but I will try it. On Tue, 10 Mar 2020, Eric Dumazet wrote: > On Tue, Mar 10, 2020 at 6:09 PM Jules Irenge <jbi.octave@xxxxxxxxx> wrote: > > > > Sparse reports warning at tcp_child_process() > > warning: context imbalance in tcp_child_process() - unexpected unlock > > The root cause is the missing annotation at tcp_child_process() > > > > Add the missing __releases(&((child)->sk_lock.slock)) annotation > > > > Signed-off-by: Jules Irenge <jbi.octave@xxxxxxxxx> > > --- > > net/ipv4/tcp_minisocks.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c > > index ad3b56d9fa71..0e8a5b6e477c 100644 > > --- a/net/ipv4/tcp_minisocks.c > > +++ b/net/ipv4/tcp_minisocks.c > > @@ -817,6 +817,7 @@ EXPORT_SYMBOL(tcp_check_req); > > > > int tcp_child_process(struct sock *parent, struct sock *child, > > struct sk_buff *skb) > > + __releases(&((child)->sk_lock.slock)) > > { > > int ret = 0; > > int state = child->sk_state; > > > Yeah, although we prefer to use lockdep these days ;) > > Reviewed-by: Eric Dumazet <edumazet@xxxxxxxxxx> >