From patchwork Thu Jun 7 08:36:27 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hong zhi guo X-Patchwork-Id: 163524 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 88539B6FA9 for ; Thu, 7 Jun 2012 18:39:26 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760135Ab2FGIjY (ORCPT ); Thu, 7 Jun 2012 04:39:24 -0400 Received: from mail-pz0-f46.google.com ([209.85.210.46]:56821 "EHLO mail-pz0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755979Ab2FGIjU (ORCPT ); Thu, 7 Jun 2012 04:39:20 -0400 Received: by dady13 with SMTP id y13so556326dad.19 for ; Thu, 07 Jun 2012 01:39:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=/sa4S+zP9fT9vRsCPBkdScIAOAgdsKzLa+Y1QlZPgGc=; b=UJN9YNjgXZ5XBOgjCw13y7pv8W2yQFu4Ns/k7lPTqMVlXXZZOBhyrSW3Oc4yZbqPs/ t1Tf8ledVoO1AMpTY+2F+qessFe0oNgIhzh1ytwEVwI2YEr+8OPNbA/hErjRiTvQVZLz 36ZnjmAzj3vs/i+o6dGywkWExt2A7t67ioqoVjXFFi5Bxkf8h+GyWcJK6fkDlG71mlfb 2EQogcc0qqYCMt3xXEloLHpJLItBbYuHnhubvnUc1Rwb5w024NZv6qQBhQCgr2CTPUYq 7jT6nmMhdSZIOqU5dNQoB+RI+NjfTuWicq6L2W2KyKcupjYFgno59+1v8unEuYlH+UK0 8MFg== Received: by 10.68.130.67 with SMTP id oc3mr7004407pbb.18.1339058360087; Thu, 07 Jun 2012 01:39:20 -0700 (PDT) Received: from localhost.localdomain ([125.33.180.221]) by mx.google.com with ESMTPS id vi10sm3397561pbc.4.2012.06.07.01.39.14 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 07 Jun 2012 01:39:19 -0700 (PDT) From: Hong Zhiguo To: davem@davemloft.net Cc: Hong Zhiguo , netdev@vger.kernel.org, arnd@arndb.de, zhiguo.hong@nsn.com, vikifang@juniper.net Subject: [PATCH net-next] macvtap: use prepare_to_wait/finish_wait to ensure mb Date: Thu, 7 Jun 2012 16:36:27 +0800 Message-Id: <1339058187-6619-1-git-send-email-honkiko@gmail.com> X-Mailer: git-send-email 1.7.4.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org instead of raw assignment to current->state Signed-off-by: Hong Zhiguo --- drivers/net/macvtap.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c index 2ee56de..0737bd4 100644 --- a/drivers/net/macvtap.c +++ b/drivers/net/macvtap.c @@ -847,13 +847,12 @@ static ssize_t macvtap_do_read(struct macvtap_queue *q, struct kiocb *iocb, const struct iovec *iv, unsigned long len, int noblock) { - DECLARE_WAITQUEUE(wait, current); + DEFINE_WAIT(wait); struct sk_buff *skb; ssize_t ret = 0; - add_wait_queue(sk_sleep(&q->sk), &wait); while (len) { - current->state = TASK_INTERRUPTIBLE; + prepare_to_wait(sk_sleep(&q->sk), &wait, TASK_INTERRUPTIBLE); /* Read frames from the queue */ skb = skb_dequeue(&q->sk.sk_receive_queue); @@ -875,8 +874,7 @@ static ssize_t macvtap_do_read(struct macvtap_queue *q, struct kiocb *iocb, break; } - current->state = TASK_RUNNING; - remove_wait_queue(sk_sleep(&q->sk), &wait); + finish_wait(sk_sleep(&q->sk), &wait); return ret; }