Hi Andreas, On Thu, Feb 25, 2016 at 11:08 AM, Andreas Fenkart <afenkart@xxxxxxxxx> wrote: > releasing the scan_pending lock in mwifiex_check_next_scan_command > is valid, since the lock is taken again, and all nodes removed > from the scan_pending queue. > > Signed-off-by: Andreas Fenkart <afenkart@xxxxxxxxx> > --- > drivers/net/wireless/marvell/mwifiex/cmdevt.c | 43 ++++++++++------------ > drivers/net/wireless/marvell/mwifiex/main.h | 1 + > drivers/net/wireless/marvell/mwifiex/scan.c | 23 +++--------- > drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c | 13 +------ > 4 files changed, 27 insertions(+), 53 deletions(-) > > diff --git a/drivers/net/wireless/marvell/mwifiex/scan.c b/drivers/net/wireless/marvell/mwifiex/scan.c > index 6ddc98b..490d0d1 100644 > --- a/drivers/net/wireless/marvell/mwifiex/scan.c > +++ b/drivers/net/wireless/marvell/mwifiex/scan.c > @@ -1920,13 +1910,10 @@ static void mwifiex_check_next_scan_command(struct mwifiex_private *priv) > } > } else if ((priv->scan_aborting && !priv->scan_request) || > priv->scan_block) { > - list_for_each_entry_safe(cmd_node, tmp_node, > - &adapter->scan_pending_q, list) { > - list_del(&cmd_node->list); > - mwifiex_insert_cmd_to_free_q(adapter, cmd_node); > - } > spin_unlock_irqrestore(&adapter->scan_pending_q_lock, flags); > > + mwifiex_cancel_pending_scan_cmd(adapter); > + This is creating a "short" window where &adapter->scan_pending_q_lock is unlocked here. Is that safe? You might want to write mwifiex_cancel_pending_scan_cmd() as two functions, one which takes the spinlock and calls the other and one which does all the work so you can call the latter here without that window where ..._q_lock is unlocked. Thanks, -- Julian Calaby Email: julian.calaby@xxxxxxxxx Profile: http://www.google.com/profiles/julian.calaby/ -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html