]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/wireless/marvell/mwifiex/cmdevt.c
mwifiex: don't drop lock between list-retrieval / list-deletion
[karo-tx-linux.git] / drivers / net / wireless / marvell / mwifiex / cmdevt.c
index 5fd6c53d7b06e7d4170f5bde44ac3b3330d9f549..95221306a4e5c8ec6a3788ed0192cefd5e579d6e 100644 (file)
@@ -761,8 +761,6 @@ int mwifiex_exec_next_cmd(struct mwifiex_adapter *adapter)
        }
        cmd_node = list_first_entry(&adapter->cmd_pending_q,
                                    struct cmd_ctrl_node, list);
-       spin_unlock_irqrestore(&adapter->cmd_pending_q_lock,
-                              cmd_pending_q_flags);
 
        host_cmd = (struct host_cmd_ds_command *) (cmd_node->cmd_skb->data);
        priv = cmd_node->priv;
@@ -771,11 +769,12 @@ int mwifiex_exec_next_cmd(struct mwifiex_adapter *adapter)
                mwifiex_dbg(adapter, ERROR,
                            "%s: cannot send cmd in sleep state,\t"
                            "this should not happen\n", __func__);
+               spin_unlock_irqrestore(&adapter->cmd_pending_q_lock,
+                                      cmd_pending_q_flags);
                spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, cmd_flags);
                return ret;
        }
 
-       spin_lock_irqsave(&adapter->cmd_pending_q_lock, cmd_pending_q_flags);
        list_del(&cmd_node->list);
        spin_unlock_irqrestore(&adapter->cmd_pending_q_lock,
                               cmd_pending_q_flags);