From patchwork Sat Jan 23 19:38:52 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Buesch X-Patchwork-Id: 74910 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.2) with ESMTP id o0NJcx35014150 for ; Sat, 23 Jan 2010 19:39:00 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751512Ab0AWTi7 (ORCPT ); Sat, 23 Jan 2010 14:38:59 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751325Ab0AWTi6 (ORCPT ); Sat, 23 Jan 2010 14:38:58 -0500 Received: from bu3sch.de ([62.75.166.246]:51088 "EHLO vs166246.vserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751119Ab0AWTi5 (ORCPT ); Sat, 23 Jan 2010 14:38:57 -0500 Received: by vs166246.vserver.de with esmtpa (Exim 4.69) id 1NYlou-0007wn-8x; Sat, 23 Jan 2010 19:38:56 +0000 From: Michael Buesch To: Larry Finger Subject: Re: hwtkip hangs on b43 Date: Sat, 23 Jan 2010 20:38:52 +0100 User-Agent: KMail/1.9.9 Cc: Johannes Berg , kecsa@kutfo.hit.bme.hu, linux-wireless@vger.kernel.org References: <201001232000.07229.mb@bu3sch.de> <4B5B4E9F.8040708@lwfinger.net> In-Reply-To: <4B5B4E9F.8040708@lwfinger.net> X-Move-Along: Nothing to see here. No, really... Nothing. MIME-Version: 1.0 Content-Disposition: inline Message-Id: <201001232038.55204.mb@bu3sch.de> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org --- wireless-testing.orig/drivers/net/wireless/b43/main.c +++ wireless-testing/drivers/net/wireless/b43/main.c @@ -856,22 +856,19 @@ static void b43_op_update_tkip_key(struc if (B43_WARN_ON(!modparam_hwtkip)) return; - mutex_lock(&wl->mutex); - + /* This is only called from the RX path though mac80211, where + * our mutex is already locked. */ + B43_WARN_ON(!mutex_is_locked(&wl->mutex)); dev = wl->current_dev; - if (!dev || b43_status(dev) < B43_STAT_INITIALIZED) - goto out_unlock; + B43_WARN_ON(!dev || b43_status(dev) < B43_STAT_INITIALIZED); keymac_write(dev, index, NULL); /* First zero out mac to avoid race */ rx_tkip_phase1_write(dev, index, iv32, phase1key); /* only pairwise TKIP keys are supported right now */ if (WARN_ON(!sta)) - goto out_unlock; + return; keymac_write(dev, index, sta->addr); - -out_unlock: - mutex_unlock(&wl->mutex); } static void do_key_write(struct b43_wldev *dev,