[Precise PATCH] (pre-stable) b43: only reload config after successful initialization

Tim Gardner tim.gardner at canonical.com
Mon Apr 30 16:29:57 UTC 2012

From: Seth Forshee <seth.forshee at canonical.com>

Commit 2a19032 (b43: reload phy and bss settings after core restarts)
introduced an unconditional call to b43_op_config() at the end of
b43_op_start(). When firmware fails to load this can wedge the system.
There's no need to reload the configuration after a failed
initialization anyway, so only make the call if initialization was

BugLink: http://bugs.launchpad.net/bugs/950295
Cc: Felix Fietkau <nbd at openwrt.org>
Cc: <stable at vger.kernel.org>
Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
 drivers/net/wireless/b43/main.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index c79e663..e4d6dc2 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -4827,8 +4827,14 @@ static int b43_op_start(struct ieee80211_hw *hw)
-	/* reload configuration */
-	b43_op_config(hw, ~0);
+	/*
+	 * Configuration may have been overwritten during initialization.
+	 * Reload the configuration, but only if initialization was
+	 * successful. Reloading the configuration after a failed init
+	 * may hang the system.
+	 */
+	if (!err)
+		b43_op_config(hw, ~0);
 	return err;

More information about the kernel-team mailing list