Re: [PATCH] net: fix race in the receive/select

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Jiri Olsa <jolsa@...>
Cc: <netdev@...>, <linux-kernel@...>, <fbl@...>, <nhorman@...>, <davem@...>, <oleg@...>, <eric.dumazet@...>
Date: Thursday, June 25, 2009 - 9:50 pm

Hello,

Jiri Olsa wrote:

So, the problem is the half barrier semantics of spin_lock on CPU1's
side and lack of any barrier (read for tp->rcv_nxt check can creep
above the queuelist update) in waitqueue_active() check on CPU2's side
(read for waitqueue list can creep above tcv_nxt update).  Am I
understanding it right?

This is a little bit scary.  The interface kind of suggests that they
have strong enough barrier semantics (well, I would assume that).  I
wonder whether there are more more places where this kind of race
condition exists.


I'm not entirely sure this is the correct place to do it while the mb
for the other side lives in network code.  Wouldn't it be better to
move this memory barrier to network select code?  It's strange for an
API to have only single side of a barrier pair and leave the other to
the API user.

Also, maybe we need smp_mb__after_unlock() too?  Maybe
add_wait_queue_mb() possibly paired with wait_queue_active_mb() is
better?  On x86, it wouldn't make any difference tho.

One more thing, can you please use fully winged style for multiline
comments?

Thanks.

-- 
tejun
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] net: fix race in the receive/select, Jiri Olsa, (Thu Jun 25, 8:25 am)
Re: [PATCH] net: fix race in the receive/select, Andi Kleen, (Mon Jun 29, 5:12 am)
Re: [PATCH] net: fix race in the receive/select, Herbert Xu, (Tue Jun 30, 11:39 pm)
Re: [PATCH] net: fix race in the receive/select, Andi Kleen, (Wed Jul 1, 2:27 am)
Re: [PATCH] net: fix race in the receive/select, Herbert Xu, (Wed Jul 1, 3:03 am)
Re: [PATCH] net: fix race in the receive/select, Andi Kleen, (Wed Jul 1, 3:22 am)
Re: [PATCH] net: fix race in the receive/select, Herbert Xu, (Wed Jul 1, 4:31 am)
Re: [PATCH] net: fix race in the receive/select, Jiri Olsa, (Wed Jul 1, 4:44 am)
Re: [PATCH] net: fix race in the receive/select, Herbert Xu, (Wed Jul 1, 6:58 am)
Re: [PATCH] net: fix race in the receive/select, Herbert Xu, (Wed Jul 1, 9:07 am)
Re: [PATCH] net: fix race in the receive/select, Zan Lynx, (Mon Jun 29, 12:59 pm)
Re: [PATCH] net: fix race in the receive/select, Andi Kleen, (Mon Jun 29, 1:29 pm)
Re: [PATCH] net: fix race in the receive/select, Jiri Olsa, (Mon Jun 29, 5:24 am)
Re: [PATCH] net: fix race in the receive/select, Tejun Heo, (Thu Jun 25, 9:50 pm)
Re: [PATCH] net: fix race in the receive/select, Eric Dumazet, (Thu Jun 25, 7:18 pm)
Re: [PATCH] net: fix race in the receive/select, Oleg Nesterov, (Thu Jun 25, 8:24 am)
Re: [PATCH] net: fix race in the receive/select, Davide Libenzi, (Thu Jun 25, 9:31 pm)
Re: [PATCH] net: fix race in the receive/select, Eric Dumazet, (Thu Jun 25, 9:59 pm)
Re: [PATCH] net: fix race in the receive/select, Davide Libenzi, (Thu Jun 25, 10:04 pm)
Re: [PATCH] net: fix race in the receive/select, Eric Dumazet, (Thu Jun 25, 10:19 pm)
Re: [PATCH] net: fix race in the receive/select, Oleg Nesterov, (Fri Jun 26, 9:46 am)
Re: [PATCH] net: fix race in the receive/select, Davide Libenzi, (Thu Jun 25, 11:14 pm)
Re: [PATCH] net: fix race in the receive/select, Oleg Nesterov, (Fri Jun 26, 9:57 am)
Re: [PATCH] net: fix race in the receive/select, Davide Libenzi, (Fri Jun 26, 1:32 pm)
Re: [PATCH] net: fix race in the receive/select, Oleg Nesterov, (Fri Jun 26, 10:50 am)
Re: [PATCH] net: fix race in the receive/select, Jarek Poplawski, (Sun Jun 28, 7:10 am)
Re: [PATCH] net: fix race in the receive/select, Jarek Poplawski, (Sun Jun 28, 7:22 am)
Re: [PATCH] net: fix race in the receive/select, Oleg Nesterov, (Sun Jun 28, 2:04 pm)
Re: [PATCH] net: fix race in the receive/select, Jarek Poplawski, (Sun Jun 28, 5:48 pm)
Re: [PATCH] net: fix race in the receive/select, Jiri Olsa, (Mon Jun 29, 5:27 am)
Re: [PATCH] net: fix race in the receive/select, Davide Libenzi, (Fri Jun 26, 2:12 pm)
Re: [PATCH] net: fix race in the receive/select, David Miller, (Fri Jun 26, 2:17 pm)
Re: [PATCH] net: fix race in the receive/select, Eric Dumazet, (Fri Jun 26, 3:35 pm)
Re: [PATCH] net: fix race in the receive/select, Jiri Olsa, (Mon Jun 29, 5:34 am)
Re: [PATCH] net: fix race in the receive/select, Jarek Poplawski, (Fri Jun 26, 1:42 am)
Re: [PATCH] net: fix race in the receive/select, Jarek Poplawski, (Fri Jun 26, 4:10 am)
Re: [PATCH] net: fix race in the receive/select, David Miller, (Thu Jun 25, 10:11 pm)