Search Linux Wireless

Re: [PATCH] libertas: don't reset card on error when it is being removed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2012-07-30 at 22:58 +0100, Daniel Drake wrote:
> On an OLPC XO-1.5 we have seen the following situation:
>  - the system starts going into suspend
>  - no wake params are set, so the mmc layer removes the card
>  - during remove, we send a command to the card
>  - that command fails, causing if_sdio's reset method to try and remove
>    the mmc card in attempt to reset it
>  - the mmc layer is not happy about being asked to remove a card that
>    it is already removing, and the kernel crashes
> 
> While the MMC layer could possibly be taught to behave better here,
> it also seems sensible for libertas not to try and reset a card if
> we're in the process of removing it anyway.
> 
> Signed-off-by: Daniel Drake <dsd@xxxxxxxxxx>

Acked-by: Dan Williams <dcbw@xxxxxxxxxx>

> ---
>  drivers/net/wireless/libertas/main.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
> index e96ee0a..8d17cac 100644
> --- a/drivers/net/wireless/libertas/main.c
> +++ b/drivers/net/wireless/libertas/main.c
> @@ -565,7 +565,10 @@ static int lbs_thread(void *data)
>  			netdev_info(dev, "Timeout submitting command 0x%04x\n",
>  				    le16_to_cpu(cmdnode->cmdbuf->command));
>  			lbs_complete_command(priv, cmdnode, -ETIMEDOUT);
> -			if (priv->reset_card)
> +
> +			/* Reset card, but only when it isn't in the process
> +			 * of being shutdown anyway. */
> +			if (!dev->dismantle && priv->reset_card)
>  				priv->reset_card(priv);
>  		}
>  		priv->cmd_timed_out = 0;


--
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


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux