From patchwork Wed May 31 14:23:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jia-Ju Bai X-Patchwork-Id: 769188 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 3wdCMm3pvgz9s5j for ; Thu, 1 Jun 2017 00:21:40 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=163.com header.i=@163.com header.b="Es7PaaH8"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751083AbdEaOVZ (ORCPT ); Wed, 31 May 2017 10:21:25 -0400 Received: from m12-13.163.com ([220.181.12.13]:53357 "EHLO m12-13.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750878AbdEaOVX (ORCPT ); Wed, 31 May 2017 10:21:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id; bh=lDL0XBQ1K6m4oSbUGK 9f/GgYvnSJL4PxXKNYTnV26+g=; b=Es7PaaH8r28dVjh0DxXrwmYDD309/FvAcc dQ+YSm7c5fb2UEVHPN/n+7YK9v9VtAWLmj3oCmRaApwJx/Y4XsEz23kqhZ5Zqp1y tZp1QK6pG9/4B646sTSQQpI3iF6P3WK1ClMYnsvuP0QXgIiVPATwZX8Fg0I/bxt2 ZBqEOziok= Received: from bai-oslab.tsinghua.edu.cn (unknown [166.111.70.19]) by smtp9 (Coremail) with SMTP id DcCowADHZlJZ0S5ZL_+jHA--.16786S2; Wed, 31 May 2017 22:21:17 +0800 (CST) From: Jia-Ju Bai To: Yuval.Mintz@cavium.com, Ariel.Elior@cavium.com, everest-linux-l2@cavium.com Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Jia-Ju Bai Subject: [PATCH] qed: Fix a sleep-in-interrupt bug in qed_int_sp_dpc Date: Wed, 31 May 2017 22:23:28 +0800 Message-Id: <1496240608-17453-1-git-send-email-baijiaju1990@163.com> X-Mailer: git-send-email 1.7.9.5 X-CM-TRANSID: DcCowADHZlJZ0S5ZL_+jHA--.16786S2 X-Coremail-Antispam: 1Uf129KBjvdXoWrtFW7JFyUury7Xry7Kr1Dtrb_yoWDuwcEgF 1xZw1fXF45tr9Ikr12krsrZ34Fvrn3Z34rZa1Iq3yfX3s8AFy5Ar9rZF97XF95W34UAF9r ArnrJFW0vw1xtjkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7IUbc18JUUUUU== X-Originating-IP: [166.111.70.19] X-CM-SenderInfo: xedlyx5dmximizq6il2tof0z/xtbBRR3oelO-7VpeEgAAsd Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The driver may sleep in interrupt handling, and the function call path is: qed_int_sp_dpc (tasklet_init indicates it handles interrupt) qed_int_attentions qed_mcp_handle_events qed_mcp_handle_link_change qed_link_update qed_fill_link qed_mcp_get_media_type qed_ptt_acquire usleep_range --> may sleep To fix it, the "usleep_range" is replaced with "udelay". Signed-off-by: Jia-Ju Bai --- drivers/net/ethernet/qlogic/qed/qed_hw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/qlogic/qed/qed_hw.c b/drivers/net/ethernet/qlogic/qed/qed_hw.c index a05feb3..3250cc4 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_hw.c +++ b/drivers/net/ethernet/qlogic/qed/qed_hw.c @@ -131,7 +131,7 @@ struct qed_ptt *qed_ptt_acquire(struct qed_hwfn *p_hwfn) } spin_unlock_bh(&p_hwfn->p_ptt_pool->lock); - usleep_range(1000, 2000); + udelay(1500); } DP_NOTICE(p_hwfn, "PTT acquire timeout - failed to allocate PTT\n");