From patchwork Fri Aug 17 08:22:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Jian X-Patchwork-Id: 958693 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="pn820gp6"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41sGRf0kCTz9s47 for ; Fri, 17 Aug 2018 18:23:09 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726705AbeHQLZe (ORCPT ); Fri, 17 Aug 2018 07:25:34 -0400 Received: from mail-ua1-f67.google.com ([209.85.222.67]:38850 "EHLO mail-ua1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726349AbeHQLZe (ORCPT ); Fri, 17 Aug 2018 07:25:34 -0400 Received: by mail-ua1-f67.google.com with SMTP id o11-v6so5266361uak.5 for ; Fri, 17 Aug 2018 01:23:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=NGPVF6BDcPRHlUtElzVjEDS9ZQQ9AXx7wHJVPiNOEZg=; b=pn820gp6zKUDNZyiACZ8/4tovhCVKO5xsa3Zv4I5tKUf5Pwo8fuKpUPo1VoVOgXCRy dAJ9Xs6oxLrS0VfKn2dwqGM1PLAofJUS1S8BkkatakoFBkNcNQRmTIs6NIy7PA5RlzHS SwnWi/unF3NIAm6CfG8xjHAduUslJCMCvV9Kxw/Eyauh/2tWLHISz77rq/VwfPY2Pp/O VN5YHhHcQrShZSBb+x36B6dg4Z4VMghprg/Bu3jJjFyGcm2CF531HMNu2M3qGTxvP7f/ BjmLEkDH9RsPO5qa2GBzp/X+JPjvYNLzAG7uSeY3r3ayrbpHPHBb7j0RxESoB1cynXVv ipBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=NGPVF6BDcPRHlUtElzVjEDS9ZQQ9AXx7wHJVPiNOEZg=; b=VstCM7ePoLU9mE880Pi6P7zLyHgdKL+6tVW6Cxrj6DRjnnr3TXa18NfxnbYFPsKtWQ hkE0dPDIrP2AlOVhj3bymaGs6IInDw4zn0RvFKlkVGNc6Kx/EDG7tk3tOCSvBFed8lu8 +4V2eifsKGezh2Tzt75gU4cNa2kTJtJpC5SyNZEgUcAKNYG8EyUByCAUTfU2RuPYBKjj nrSKqrOlMOVaARXL6GZg0F+FUL/H8UlwESZ4xiVVlokCQo5r2L72gQw1qNCjzvGWuPqF Nw6WxHGoYTIfN4X08JySNeFIutSrtLzKm+YIKTBOFPRn+y2teF8vkcu4OBXVTPlHxUX1 ckgw== X-Gm-Message-State: AOUpUlFaTsMNxO8xJAYDhI4AnS4Kl3TcVShmm097ARdRO1I0CHZ2RoVU YN+fG0FoJh0Wx07Eftst8ms= X-Google-Smtp-Source: AA+uWPyQEj8ARMdCDFaRJCqEbvEXV7hQww1syG1659uEXL7MbyuVS8byEnhI66nAgVRtggbifSb2Aw== X-Received: by 2002:ab0:64c5:: with SMTP id j5-v6mr21567098uaq.106.1534494186740; Fri, 17 Aug 2018 01:23:06 -0700 (PDT) Received: from wj-ubu.c.ddve-gcp.internal (130.100.229.35.bc.googleusercontent.com. [35.229.100.130]) by smtp.gmail.com with ESMTPSA id j11-v6sm953315uah.46.2018.08.17.01.23.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 17 Aug 2018 01:23:05 -0700 (PDT) From: Wang Jian To: davem@davemloft.net, jasowang@redhat.com, mst@redhat.com, willemb@google.com, viro@zeniv.linux.org.uk, wexu@redhat.com, netdev@vger.kernel.org Cc: Wang Jian Subject: [PATCH 1/1] tap: RCU usage and comment fixes Date: Fri, 17 Aug 2018 08:22:53 +0000 Message-Id: <20180817082253.2539-1-jianjian.wang1@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The tap_queue and the 'tap_dev' are loosely coupled, not 'macvlan_dev'. Taking rcu_read_lock a little later seems can slightly reduce rcu read critical section. Signed-off-by: Wang Jian --- drivers/net/tap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/tap.c b/drivers/net/tap.c index f0f7cd977667..e5e5a8e4a60d 100644 --- a/drivers/net/tap.c +++ b/drivers/net/tap.c @@ -125,7 +125,7 @@ static struct tap_dev *tap_dev_get_rcu(const struct net_device *dev) /* * RCU usage: - * The tap_queue and the macvlan_dev are loosely coupled, the + * The tap_queue and the tap_dev are loosely coupled, the * pointers from one to the other can only be read while rcu_read_lock * or rtnl is held. * @@ -720,8 +720,6 @@ static ssize_t tap_get_user(struct tap_queue *q, struct msghdr *m, __vlan_get_protocol(skb, skb->protocol, &depth) != 0) skb_set_network_header(skb, depth); - rcu_read_lock(); - tap = rcu_dereference(q->tap); /* copy skb_ubuf_info for callback when skb has no error */ if (zerocopy) { skb_shinfo(skb)->destructor_arg = m->msg_control; @@ -732,6 +730,8 @@ static ssize_t tap_get_user(struct tap_queue *q, struct msghdr *m, uarg->callback(uarg, false); } + rcu_read_lock(); + tap = rcu_dereference(q->tap); if (tap) { skb->dev = tap->dev; dev_queue_xmit(skb);