diff --git a/drivers/net/wireless/marvell/libertas/firmware.c b/drivers/net/wireless/marvell/libertas/firmware.c index f124110944b7..19ec9a20122a 100644 --- a/drivers/net/wireless/marvell/libertas/firmware.c +++ b/drivers/net/wireless/marvell/libertas/firmware.c @@ -113,7 +113,10 @@ static void load_next_firmware_from_table(struct lbs_private *priv) void lbs_wait_for_firmware_load(struct lbs_private *priv) { - wait_event(priv->fw_waitq, priv->fw_callback == NULL); + unsigned long flags; + spin_lock_irqsave(&priv->driver_lock, flags); + wait_event_lock_irq(priv->fw_waitq, priv->fw_callback == NULL, priv->driver_lock); + spin_unlock_irqrestore(&priv->driver_lock, flags); } /**