Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3015205ybt; Mon, 29 Jun 2020 12:59:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzDPaUtIRL/t0wkd15gA/bBhreoNWCY0e9KraYaue8SwSb6CZfgNtqhB5/gW0qornUNtK+q X-Received: by 2002:aa7:d3c8:: with SMTP id o8mr12725182edr.294.1593460750580; Mon, 29 Jun 2020 12:59:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593460750; cv=none; d=google.com; s=arc-20160816; b=PXXmvoCxnTqI99popRmAeAhESV6UhCNXdPJKVmVzbEr9ZpF8q3CTuk7N3zpzJFW3yx S5ip28VT07gC9LdkK9zEDf82hu+XpECLb0LxMGlbDl0e9vCv59lw6hAwzK7pk+oFAGMP ZOWenmn3fhxkLntPkN2v2rR0ncnZ5z+2pFlkzUtByt1yROmJJ5tpGwUH1vhJXgoa62Gz QHNbA54QwqBxXRJUZIwsbg4/Evr0DiAxI0sALuoF7OqFvdu+7imdhsv9IG34T2M0jY9b kpmJbLD7do0sVv3Fx1W/vgZ8XO2QScn/3KswMx/4TZqTgFnRoKnqRAFmCuV6rzyGyKvx sayA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=TlJADIgPesggmT4wUcTFNapIgGbm+GrAaDDMWC+gUuU=; b=iPJHKdDtCffFP/cmsJjccBpMO5m3eapBCAWBs7tQ17y4nhoy//papsbJsdPipZCLKO 3SLp+2j8YSIuWU0FPSfvMI9rQgRT/EADozWuHfsElD1gyZsoqB0MPYHsS93+x9VPMiUT s9QsB5PCdG3VNrvgohpsn32AN8SGww68R9VK6vpZ6ehyEbhuYvXTV5IkztCW8ITXiQoT 7UVt+cxS1UGl4lSe0M4cvQeUiYrULzBHvqUhzQFxbGcVPCsk+Yqc6r1RQsewS56Zirtm 64MZkOWZzHQv5TxRzTweunozEJ72X1tmCOiqLOvrCQs80G+4iGfvZ33gZ+a1NU57zBWv wuSw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=d4Y81AkS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w16si355328ejq.299.2020.06.29.12.58.47; Mon, 29 Jun 2020 12:59:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=d4Y81AkS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388490AbgF2T6f (ORCPT + 99 others); Mon, 29 Jun 2020 15:58:35 -0400 Received: from mail.kernel.org ([198.145.29.99]:47672 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387601AbgF2TkS (ORCPT ); Mon, 29 Jun 2020 15:40:18 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1498D248C8; Mon, 29 Jun 2020 15:27:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593444421; bh=W4IM7D2E1FmkEYvPp8iWmlQ9o/pvtw/YUi/t1cXKruE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=d4Y81AkSkE3OVSpGBpZ2TR/Jbw6/AY0+jUzBr9XzMGdm/dVHfg/Lh5cF9FaNAP8E7 6GWXN7uJsIg933wGzfl3Ex+OYWLZpMy9SS0gOcPPeLOi2DRrTctVvNCqGmLjlX7+F+ OsHzewZipz+xy+h284Tn5JySCmWPtwBKXBaqtqG8= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Rahul Lakkireddy , "David S . Miller" , Sasha Levin Subject: [PATCH 5.4 099/178] cxgb4: move handling L2T ARP failures to caller Date: Mon, 29 Jun 2020 11:24:04 -0400 Message-Id: <20200629152523.2494198-100-sashal@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200629152523.2494198-1-sashal@kernel.org> References: <20200629152523.2494198-1-sashal@kernel.org> MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.4.50-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-5.4.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 5.4.50-rc1 X-KernelTest-Deadline: 2020-07-01T15:25+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Rahul Lakkireddy [ Upstream commit 11d8cd5c9f3b46f397f889cefdb66795518aaebd ] Move code handling L2T ARP failures to the only caller. Fixes following sparse warning: skbuff.h:2091:29: warning: context imbalance in 'handle_failed_resolution' - unexpected unlock Fixes: 749cb5fe48bb ("cxgb4: Replace arpq_head/arpq_tail with SKB double link-list code") Signed-off-by: Rahul Lakkireddy Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/chelsio/cxgb4/l2t.c | 52 +++++++++++------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/drivers/net/ethernet/chelsio/cxgb4/l2t.c b/drivers/net/ethernet/chelsio/cxgb4/l2t.c index e6fe2870137b0..a440c1cf0b61e 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/l2t.c +++ b/drivers/net/ethernet/chelsio/cxgb4/l2t.c @@ -506,41 +506,20 @@ u64 cxgb4_select_ntuple(struct net_device *dev, } EXPORT_SYMBOL(cxgb4_select_ntuple); -/* - * Called when address resolution fails for an L2T entry to handle packets - * on the arpq head. If a packet specifies a failure handler it is invoked, - * otherwise the packet is sent to the device. - */ -static void handle_failed_resolution(struct adapter *adap, struct l2t_entry *e) -{ - struct sk_buff *skb; - - while ((skb = __skb_dequeue(&e->arpq)) != NULL) { - const struct l2t_skb_cb *cb = L2T_SKB_CB(skb); - - spin_unlock(&e->lock); - if (cb->arp_err_handler) - cb->arp_err_handler(cb->handle, skb); - else - t4_ofld_send(adap, skb); - spin_lock(&e->lock); - } -} - /* * Called when the host's neighbor layer makes a change to some entry that is * loaded into the HW L2 table. */ void t4_l2t_update(struct adapter *adap, struct neighbour *neigh) { - struct l2t_entry *e; - struct sk_buff_head *arpq = NULL; - struct l2t_data *d = adap->l2t; unsigned int addr_len = neigh->tbl->key_len; u32 *addr = (u32 *) neigh->primary_key; - int ifidx = neigh->dev->ifindex; - int hash = addr_hash(d, addr, addr_len, ifidx); + int hash, ifidx = neigh->dev->ifindex; + struct sk_buff_head *arpq = NULL; + struct l2t_data *d = adap->l2t; + struct l2t_entry *e; + hash = addr_hash(d, addr, addr_len, ifidx); read_lock_bh(&d->lock); for (e = d->l2tab[hash].first; e; e = e->next) if (!addreq(e, addr) && e->ifindex == ifidx) { @@ -573,8 +552,25 @@ void t4_l2t_update(struct adapter *adap, struct neighbour *neigh) write_l2e(adap, e, 0); } - if (arpq) - handle_failed_resolution(adap, e); + if (arpq) { + struct sk_buff *skb; + + /* Called when address resolution fails for an L2T + * entry to handle packets on the arpq head. If a + * packet specifies a failure handler it is invoked, + * otherwise the packet is sent to the device. + */ + while ((skb = __skb_dequeue(&e->arpq)) != NULL) { + const struct l2t_skb_cb *cb = L2T_SKB_CB(skb); + + spin_unlock(&e->lock); + if (cb->arp_err_handler) + cb->arp_err_handler(cb->handle, skb); + else + t4_ofld_send(adap, skb); + spin_lock(&e->lock); + } + } spin_unlock_bh(&e->lock); } -- 2.25.1