|
@@ -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);
|
|
|
}
|
|
|
|