diff options
| -rw-r--r-- | drivers/mmc/core/sdio_bus.c | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/drivers/mmc/core/sdio_bus.c b/drivers/mmc/core/sdio_bus.c index d37464e296a5..9e060c87e64d 100644 --- a/drivers/mmc/core/sdio_bus.c +++ b/drivers/mmc/core/sdio_bus.c @@ -248,12 +248,15 @@ int sdio_add_func(struct sdio_func *func)  /*   * Unregister a SDIO function with the driver model, and   * (eventually) free it. + * This function can be called through error paths where sdio_add_func() was + * never executed (because a failure occurred at an earlier point).   */  void sdio_remove_func(struct sdio_func *func)  { -	if (sdio_func_present(func)) -		device_del(&func->dev); +	if (!sdio_func_present(func)) +		return; +	device_del(&func->dev);  	put_device(&func->dev);  } | 
