From patchwork Thu Sep 11 20:49:22 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nikolay Aleksandrov X-Patchwork-Id: 388384 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 B41C5140131 for ; Fri, 12 Sep 2014 06:50:47 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757368AbaIKUum (ORCPT ); Thu, 11 Sep 2014 16:50:42 -0400 Received: from mx1.redhat.com ([209.132.183.28]:13927 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757364AbaIKUul (ORCPT ); Thu, 11 Sep 2014 16:50:41 -0400 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s8BKoZr8012654 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 11 Sep 2014 16:50:36 -0400 Received: from solar.usersys.redhat.com (dhcp-1-127.brq.redhat.com [10.34.1.127]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s8BKoVIT011078; Thu, 11 Sep 2014 16:50:34 -0400 From: Nikolay Aleksandrov To: netdev@vger.kernel.org Cc: vfalico@gmail.com, j.vosburgh@gmail.com, andy@greyhouse.net, davem@davemloft.net, Nikolay Aleksandrov Subject: [PATCH net-next v2 1/7] bonding: 3ad: clean up curr_slave_lock usage Date: Thu, 11 Sep 2014 22:49:22 +0200 Message-Id: <1410468568-13781-2-git-send-email-nikolay@redhat.com> In-Reply-To: <1410468568-13781-1-git-send-email-nikolay@redhat.com> References: <1410468568-13781-1-git-send-email-nikolay@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Remove the read_lock in bond_3ad_lacpdu_recv() since when the slave is being released its rx_handler is removed before 3ad unbind, so even if packets arrive, they won't see the slave in an inconsistent state. Signed-off-by: Nikolay Aleksandrov --- v2: Only remove the curr_slave_lock from bond_3ad_lacpdu_recv, leave it in bond_3ad_state_machine_handler drivers/net/bonding/bond_3ad.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index 5d27a6207384..dfd3a7835d17 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c @@ -2476,20 +2476,16 @@ err_free: int bond_3ad_lacpdu_recv(const struct sk_buff *skb, struct bonding *bond, struct slave *slave) { - int ret = RX_HANDLER_ANOTHER; struct lacpdu *lacpdu, _lacpdu; if (skb->protocol != PKT_TYPE_LACPDU) - return ret; + return RX_HANDLER_ANOTHER; lacpdu = skb_header_pointer(skb, 0, sizeof(_lacpdu), &_lacpdu); if (!lacpdu) - return ret; + return RX_HANDLER_ANOTHER; - read_lock(&bond->curr_slave_lock); - ret = bond_3ad_rx_indication(lacpdu, slave, skb->len); - read_unlock(&bond->curr_slave_lock); - return ret; + return bond_3ad_rx_indication(lacpdu, slave, skb->len); } /**