Re: [PATCH] macvtap: use set_curren_state to ensure mb
From: Eric Dumazet <hidden>
Date: 2012-06-05 11:05:34
On Tue, 2012-06-05 at 18:46 +0800, Hong zhi guo wrote:
quoted hunk ↗ jump to hunk
replace raw assignment of current->state with set_current_state(TASK_...) to ensure memory barrier. Signed-off-by: Hong Zhiguo <redacted> --- drivers/net/macvtap.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c index 2ee56de..62754f6 100644 --- a/drivers/net/macvtap.c +++ b/drivers/net/macvtap.c@@ -853,7 +853,7 @@ static ssize_t macvtap_do_read(structmacvtap_queue *q, struct kiocb *iocb, add_wait_queue(sk_sleep(&q->sk), &wait); while (len) { - current->state = TASK_INTERRUPTIBLE; + set_current_state(TASK_INTERRUPTIBLE); /* Read frames from the queue */ skb = skb_dequeue(&q->sk.sk_receive_queue);@@ -875,7 +875,7 @@ static ssize_t macvtap_do_read(structmacvtap_queue *q, struct kiocb *iocb, break; } - current->state = TASK_RUNNING; + set_current_state(TASK_RUNNING); remove_wait_queue(sk_sleep(&q->sk), &wait); return ret; }
Why not using the more standard : prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); and finish_wait(sk_sleep(sk), &wait);