From patchwork Tue Jan 6 21:17:53 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 425822 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 82F261400D5 for ; Wed, 7 Jan 2015 08:25:11 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756125AbbAFVZF (ORCPT ); Tue, 6 Jan 2015 16:25:05 -0500 Received: from gw01.mail.saunalahti.fi ([195.197.172.115]:41969 "EHLO gw01.mail.saunalahti.fi" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753218AbbAFVZE (ORCPT ); Tue, 6 Jan 2015 16:25:04 -0500 X-Greylist: delayed 417 seconds by postgrey-1.27 at vger.kernel.org; Tue, 06 Jan 2015 16:25:03 EST Received: from localhost.localdomain (a91-152-110-231.elisa-laajakaista.fi [91.152.110.231]) by gw01.mail.saunalahti.fi (Postfix) with ESMTP id CCC6040080; Tue, 6 Jan 2015 23:17:54 +0200 (EET) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.14.7/8.14.7) with ESMTP id t06LHtDg024684; Tue, 6 Jan 2015 23:17:55 +0200 Received: (from andy@localhost) by localhost.localdomain (8.14.7/8.14.7/Submit) id t06LHswm024682; Tue, 6 Jan 2015 23:17:54 +0200 X-Authentication-Warning: localhost.localdomain: andy set sender to andy.shevchenko@gmail.com using -f From: Andy Shevchenko To: netdev@vger.kernel.org, linux-driver@qlogic.com, "David S . Miller" Cc: Andy Shevchenko Subject: [PATCH] qla3xxx: don't allow never end busy loop Date: Tue, 6 Jan 2015 23:17:53 +0200 Message-Id: <1420579073-24637-1-git-send-email-andy.shevchenko@gmail.com> X-Mailer: git-send-email 1.8.3.101.g727a46b Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The counter variable wasn't increased at all which may stuck under certain circumstances. Signed-off-by: Andy Shevchenko --- drivers/net/ethernet/qlogic/qla3xxx.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/qlogic/qla3xxx.c b/drivers/net/ethernet/qlogic/qla3xxx.c index c2f09af..4847713 100644 --- a/drivers/net/ethernet/qlogic/qla3xxx.c +++ b/drivers/net/ethernet/qlogic/qla3xxx.c @@ -146,10 +146,7 @@ static int ql_wait_for_drvr_lock(struct ql3_adapter *qdev) { int i = 0; - while (i < 10) { - if (i) - ssleep(1); - + do { if (ql_sem_lock(qdev, QL_DRVR_SEM_MASK, (QL_RESOURCE_BITS_BASE_CODE | (qdev->mac_index) @@ -158,7 +155,8 @@ static int ql_wait_for_drvr_lock(struct ql3_adapter *qdev) "driver lock acquired\n"); return 1; } - } + ssleep(1); + } while (++i < 10); netdev_err(qdev->ndev, "Timed out waiting for driver lock...\n"); return 0;