From patchwork Thu Jun 28 19:22:42 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 167943 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 BD278B6FFF for ; Fri, 29 Jun 2012 05:22:49 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752375Ab2F1TWr (ORCPT ); Thu, 28 Jun 2012 15:22:47 -0400 Received: from mail-wi0-f172.google.com ([209.85.212.172]:58801 "EHLO mail-wi0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751399Ab2F1TWq (ORCPT ); Thu, 28 Jun 2012 15:22:46 -0400 Received: by wibhm11 with SMTP id hm11so396573wib.1 for ; Thu, 28 Jun 2012 12:22:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:from:to:cc:content-type:date:message-id:mime-version :x-mailer:content-transfer-encoding; bh=IDYKIOV5Zs64dOdUo1eqIMlK/yRtxHeAQgv3ThCNc/A=; b=Gjku4sYopYH850whO/hXRArimP88kN5fKl/EyOBb6cBgY/TBBzwzSk2zAwqxFLPtya l3RwRvlOyDzpMkbqwn0yOAKHNv8cH26c2wYh7K29euUEVEqZsHAmF5q/ViaO0d4HMogg r/QCWiCdFw9GojqjsFbmJQrmihW/yrZ3rfftP6UpeFdl1/gOtQVQ6v31miwIrHKF3lCI SAtG6Gs2T9mREKhNsIx3aIaAExNac0MRooE4P45kD4eOsl3+Zi/yn2R84T06QBb7v26G kbVw0tk5LQz0icLPrKDCYEkFYR7pRaT/kqzF+e/V7qbP+IFsA+yebKEto3fH1asGRMDO +pmg== Received: by 10.216.132.94 with SMTP id n72mr1792811wei.60.1340911365358; Thu, 28 Jun 2012 12:22:45 -0700 (PDT) Received: from [172.28.89.75] ([74.125.122.49]) by mx.google.com with ESMTPS id eu4sm1812150wib.2.2012.06.28.12.22.43 (version=SSLv3 cipher=OTHER); Thu, 28 Jun 2012 12:22:44 -0700 (PDT) Subject: [PATCH] net: unlock busylock before servicing qdisc From: Eric Dumazet To: David Miller Cc: netdev , Tom Parkin Date: Thu, 28 Jun 2012 21:22:42 +0200 Message-ID: <1340911362.13187.183.camel@edumazet-glaptop> 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 From: Eric Dumazet commit 79640a4ca6 (net: add additional lock to qdisc to increase throughput) added a LOCKDEP occurrence on bonding/l2tp or other stacked devices, if several levels use a qdisc. We should release the busylock before the call to sch_direct_xmit() or else LOCKDEP complains we try to lock busylock again in the lower dev qdisc handler. This of course is a false lockdep positive, but this patch is the simplest way to get rid of it. Reported-by: Tom Parkin Tested-by: Tom Parkin Signed-off-by: Eric Dumazet Cc: Alexander Duyck --- net/core/dev.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) rc = NET_XMIT_SUCCESS; -- 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/core/dev.c b/net/core/dev.c index 6df2140..d265c67 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2412,13 +2412,13 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q, qdisc_bstats_update(q, skb); - if (sch_direct_xmit(skb, q, dev, txq, root_lock)) { - if (unlikely(contended)) { - spin_unlock(&q->busylock); - contended = false; - } + if (unlikely(contended)) { + spin_unlock(&q->busylock); + contended = false; + } + if (sch_direct_xmit(skb, q, dev, txq, root_lock)) __qdisc_run(q); - } else + else qdisc_run_end(q);