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>