From patchwork Tue Sep 29 18:39:22 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ron Mercer X-Patchwork-Id: 34450 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.176.167]) by ozlabs.org (Postfix) with ESMTP id C63E9B7C25 for ; Wed, 30 Sep 2009 04:45:40 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753847AbZI2Spa (ORCPT ); Tue, 29 Sep 2009 14:45:30 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753731AbZI2SpP (ORCPT ); Tue, 29 Sep 2009 14:45:15 -0400 Received: from avexch1.qlogic.com ([198.70.193.115]:8737 "EHLO avexch1.qlogic.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753448AbZI2SpP (ORCPT ); Tue, 29 Sep 2009 14:45:15 -0400 Received: from linux-ox1b.qlogic.com ([172.17.161.157]) by avexch1.qlogic.com with Microsoft SMTPSVC(6.0.3790.1830); Tue, 29 Sep 2009 11:44:36 -0700 Received: by linux-ox1b.qlogic.com (Postfix, from userid 1000) id 19E4E2C688; Tue, 29 Sep 2009 11:39:26 -0700 (PDT) From: Ron Mercer To: davem@davemloft.net Cc: netdev@vger.kernel.org, ron.mercer@qlogic.com Subject: [net-2.6 PATCH 2/5] qlge: Fix out of sync hardware semaphore. Date: Tue, 29 Sep 2009 11:39:22 -0700 Message-Id: <1254249565-16381-3-git-send-email-ron.mercer@qlogic.com> X-Mailer: git-send-email 1.6.0.2 In-Reply-To: <1254249565-16381-1-git-send-email-ron.mercer@qlogic.com> References: <1254249565-16381-1-git-send-email-ron.mercer@qlogic.com> X-OriginalArrivalTime: 29 Sep 2009 18:44:37.0020 (UTC) FILETIME=[E509A5C0:01CA4134] Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org ql_clear_routing_entries() takes/gives it's own hardware semaphore since it is called from more than one place. ql_route_initialize() should make this call and THEN take it's own semaphore before doing it's work. Signed-off-by: Ron Mercer --- drivers/net/qlge/qlge_main.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c index 2205292..e4b756d 100644 --- a/drivers/net/qlge/qlge_main.c +++ b/drivers/net/qlge/qlge_main.c @@ -3142,14 +3142,14 @@ static int ql_route_initialize(struct ql_adapter *qdev) { int status = 0; - status = ql_sem_spinlock(qdev, SEM_RT_IDX_MASK); + /* Clear all the entries in the routing table. */ + status = ql_clear_routing_entries(qdev); if (status) return status; - /* Clear all the entries in the routing table. */ - status = ql_clear_routing_entries(qdev); + status = ql_sem_spinlock(qdev, SEM_RT_IDX_MASK); if (status) - goto exit; + return status; status = ql_set_routing_reg(qdev, RT_IDX_ALL_ERR_SLOT, RT_IDX_ERR, 1); if (status) {