From patchwork Thu Feb 6 23:00:52 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cong Wang X-Patchwork-Id: 317569 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 7A2DA2C009E for ; Fri, 7 Feb 2014 10:01:13 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756025AbaBFXBI (ORCPT ); Thu, 6 Feb 2014 18:01:08 -0500 Received: from mail-pa0-f46.google.com ([209.85.220.46]:58601 "EHLO mail-pa0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751297AbaBFXBH (ORCPT ); Thu, 6 Feb 2014 18:01:07 -0500 Received: by mail-pa0-f46.google.com with SMTP id rd3so2323377pab.19 for ; Thu, 06 Feb 2014 15:01:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=5LcSBQXvXZp4BJwMwxk3u1FIwitI0nV9XGccC7ST2Gc=; b=eZ65TLv3eSZpbUrqt2YfQPPE+7vbfZD7aDA6Kr/IbbfUZuuEJNrGW32pXrtKPUAxmu csz0Ack+K6AzxzOFZZ1mu0PVx9Z9B7Xy/qDgmu84z4Gsvrdb5Gu2TmOSCOgcmgJR/t7C Zqxvn20nllx2URVmM+N0cjU7qZ0G89OBXyy+KhD6fftAf+iaIV/YIVx3OeyCA9seMr3S lWUOYlFkByuP8FgX1unAhB+0iZ4S+fadu7UfabqF6/PLmxImmDH4+/9Z9nCX7hYFEHVx wp5AcvGWl3gUqeCtcO0g9SWTpeQXUY+hiGC/Bv7LoEkNWUHcGFOyhCtHYk+laICbPhK2 yT1g== X-Received: by 10.68.75.9 with SMTP id y9mr15468202pbv.61.1391727666068; Thu, 06 Feb 2014 15:01:06 -0800 (PST) Received: from localhost.net ([8.25.197.24]) by mx.google.com with ESMTPSA id yd4sm7143059pbc.13.2014.02.06.15.01.04 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 06 Feb 2014 15:01:05 -0800 (PST) From: Cong Wang To: netdev@vger.kernel.org Cc: Toshiaki Makita , Stephen Hemminger , "David S. Miller" , Cong Wang , Cong Wang Subject: [Patch net] bridge: fix netconsole setup over bridge Date: Thu, 6 Feb 2014 15:00:52 -0800 Message-Id: <1391727652-12520-1-git-send-email-xiyou.wangcong@gmail.com> X-Mailer: git-send-email 1.8.3.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Cong Wang Commit 93d8bf9fb8f3 ("bridge: cleanup netpoll code") introduced a check in br_netpoll_enable(), but this check is incorrect for br_netpoll_setup(). This patch moves the code after the check into __br_netpoll_enable() and calls it in br_netpoll_setup(). For br_add_if(), the check is still needed. Fixes: 93d8bf9fb8f3 ("bridge: cleanup netpoll code") Cc: Toshiaki Makita Cc: Stephen Hemminger Cc: David S. Miller Signed-off-by: Cong Wang Signed-off-by: Cong Wang Acked-by: Toshiaki Makita Tested-by: Toshiaki Makita --- -- 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/bridge/br_device.c b/net/bridge/br_device.c index e4401a5..d9a9b0f 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c @@ -226,6 +226,33 @@ static void br_netpoll_cleanup(struct net_device *dev) br_netpoll_disable(p); } +static int __br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp) +{ + struct netpoll *np; + int err; + + np = kzalloc(sizeof(*p->np), gfp); + if (!np) + return -ENOMEM; + + err = __netpoll_setup(np, p->dev, gfp); + if (err) { + kfree(np); + return err; + } + + p->np = np; + return err; +} + +int br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp) +{ + if (!p->br->dev->npinfo) + return 0; + + return __br_netpoll_enable(p, gfp); +} + static int br_netpoll_setup(struct net_device *dev, struct netpoll_info *ni, gfp_t gfp) { @@ -236,7 +263,7 @@ static int br_netpoll_setup(struct net_device *dev, struct netpoll_info *ni, list_for_each_entry(p, &br->port_list, list) { if (!p->dev) continue; - err = br_netpoll_enable(p, gfp); + err = __br_netpoll_enable(p, gfp); if (err) goto fail; } @@ -249,28 +276,6 @@ fail: goto out; } -int br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp) -{ - struct netpoll *np; - int err; - - if (!p->br->dev->npinfo) - return 0; - - np = kzalloc(sizeof(*p->np), gfp); - if (!np) - return -ENOMEM; - - err = __netpoll_setup(np, p->dev, gfp); - if (err) { - kfree(np); - return err; - } - - p->np = np; - return err; -} - void br_netpoll_disable(struct net_bridge_port *p) { struct netpoll *np = p->np;