From patchwork Tue Jun 8 08:34:35 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 54949 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 4E1FEB7D7F for ; Tue, 8 Jun 2010 18:34:44 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752950Ab0FHIek (ORCPT ); Tue, 8 Jun 2010 04:34:40 -0400 Received: from mail-fx0-f46.google.com ([209.85.161.46]:50545 "EHLO mail-fx0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751999Ab0FHIei (ORCPT ); Tue, 8 Jun 2010 04:34:38 -0400 Received: by fxm8 with SMTP id 8so2663562fxm.19 for ; Tue, 08 Jun 2010 01:34:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:subject:from:to:cc :content-type:date:message-id:mime-version:x-mailer :content-transfer-encoding; bh=Qm13LDqG2Ob2EJApPyY8N3pjqMbSZfGmnbWQ0jtcWBg=; b=WkiVF13YMwMId8nGLU7sg6Kg5ouPjr1xS2QzmGtGuc+aq9P3UudG5QITDsydmYbytg XUjQkGhKXl8MiIq5O+LkHtsDCuYYLoWbTX6smQMsAyNOOWbMGgzvF4gRr2dku1g26Pgk tIMMpc6iCJdYb7y31Q50mEM/sZ4mJMkkrBS7Q= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=subject:from:to:cc:content-type:date:message-id:mime-version :x-mailer:content-transfer-encoding; b=lXg/nx9ajruQDPUju5qoh4oYwNfQr/pLtfGBExYCWH0t8i3RBsk+899dJS/4WU29LW R+Lzbe4xEc7v2jgOrrS29/jKGZS5Rb2A94AYdduLmbTM0nFm/ckr2yz3YzJju9LMNC31 KIUd+uG7e6AY+UUt1NfMN8H6+rp0/z/8MbObc= Received: by 10.223.98.19 with SMTP id o19mr16122636fan.80.1275986077473; Tue, 08 Jun 2010 01:34:37 -0700 (PDT) Received: from [127.0.0.1] ([85.17.35.125]) by mx.google.com with ESMTPS id 7sm24389744far.6.2010.06.08.01.34.36 (version=SSLv3 cipher=RC4-MD5); Tue, 08 Jun 2010 01:34:37 -0700 (PDT) Subject: [PATCH net-next-2.6] icmp: RCU conversion in icmp_address_reply() From: Eric Dumazet To: David Miller Cc: netdev Date: Tue, 08 Jun 2010 10:34:35 +0200 Message-ID: <1275986075.2475.73.camel@edumazet-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org - rcu_read_lock() already held by caller - use __in_dev_get_rcu() instead of in_dev_get() / in_dev_put() - remove goto out; Signed-off-by: Eric Dumazet --- net/ipv4/icmp.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) -- 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 diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c index d65e921..bdb6c71 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c @@ -925,6 +925,7 @@ static void icmp_address(struct sk_buff *skb) /* * RFC1812 (4.3.3.9). A router SHOULD listen all replies, and complain * loudly if an inconsistency is found. + * called with rcu_read_lock() */ static void icmp_address_reply(struct sk_buff *skb) @@ -935,12 +936,12 @@ static void icmp_address_reply(struct sk_buff *skb) struct in_ifaddr *ifa; if (skb->len < 4 || !(rt->rt_flags&RTCF_DIRECTSRC)) - goto out; + return; - in_dev = in_dev_get(dev); + in_dev = __in_dev_get_rcu(dev); if (!in_dev) - goto out; - rcu_read_lock(); + return; + if (in_dev->ifa_list && IN_DEV_LOG_MARTIANS(in_dev) && IN_DEV_FORWARD(in_dev)) { @@ -958,9 +959,6 @@ static void icmp_address_reply(struct sk_buff *skb) mp, dev->name, &rt->rt_src); } } - rcu_read_unlock(); - in_dev_put(in_dev); -out:; } static void icmp_discard(struct sk_buff *skb)