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) | |||
| 248 | /* | 248 | /* |
| 249 | * Unregister a SDIO function with the driver model, and | 249 | * Unregister a SDIO function with the driver model, and |
| 250 | * (eventually) free it. | 250 | * (eventually) free it. |
| 251 | * This function can be called through error paths where sdio_add_func() was | ||
| 252 | * never executed (because a failure occurred at an earlier point). | ||
| 251 | */ | 253 | */ |
| 252 | void sdio_remove_func(struct sdio_func *func) | 254 | void sdio_remove_func(struct sdio_func *func) |
| 253 | { | 255 | { |
| 254 | if (sdio_func_present(func)) | 256 | if (!sdio_func_present(func)) |
| 255 | device_del(&func->dev); | 257 | return; |
| 256 | 258 | ||
| 259 | device_del(&func->dev); | ||
| 257 | put_device(&func->dev); | 260 | put_device(&func->dev); |
| 258 | } | 261 | } |
| 259 | 262 | ||
