Re: [PATCH net] tcp/dccp: fix lockdep issue when SYN is backlogged

2018-10-02 Thread Eric Dumazet



On 10/01/2018 03:43 PM, David Miller wrote:
> From: Eric Dumazet 
> Date: Mon,  1 Oct 2018 15:02:26 -0700

>> This patch extends what I did in commit 449809a66c1d ("tcp/dccp:
>> block BH for SYN processing") by adding an extra rcu_read_{lock|unlock}
>> pair in the paths that might be taken when processing SYN from
>> socket backlog (thus possibly in process context)
>>
>> Fixes: 06f877d613be ("tcp/dccp: fix other lockdep splats accessing ireq_opt")
>> Signed-off-by: Eric Dumazet 
>> Reported-by: syzbot 
> 
> Applied and queued up for -stable, thanks Eric.
> 

This needs a followup, timers do not imply rcu_read_lock() :/

I will send a patch, sorry for not having caught this earlier.



Re: [PATCH net] tcp/dccp: fix lockdep issue when SYN is backlogged

2018-10-01 Thread David Miller
From: Eric Dumazet 
Date: Mon,  1 Oct 2018 15:02:26 -0700

> In normal SYN processing, packets are handled without listener
> lock and in RCU protected ingress path.
> 
> But syzkaller is known to be able to trick us and SYN
> packets might be processed in process context, after being
> queued into socket backlog.
> 
> In commit 06f877d613be ("tcp/dccp: fix other lockdep splats
> accessing ireq_opt") I made a very stupid fix, that happened
> to work mostly because of the regular path being RCU protected.
> 
> Really the thing protecting ireq->ireq_opt is RCU read lock,
> and the pseudo request refcnt is not relevant.
> 
> This patch extends what I did in commit 449809a66c1d ("tcp/dccp:
> block BH for SYN processing") by adding an extra rcu_read_{lock|unlock}
> pair in the paths that might be taken when processing SYN from
> socket backlog (thus possibly in process context)
> 
> Fixes: 06f877d613be ("tcp/dccp: fix other lockdep splats accessing ireq_opt")
> Signed-off-by: Eric Dumazet 
> Reported-by: syzbot 

Applied and queued up for -stable, thanks Eric.