X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fbase%2Fplatform.c;h=17b5ece8f82cf647c8bf4fad6b632bbb9ab33a3e;hb=5cefcab3db2b13093480f2a42bf081574dd72d3d;hp=30480f6f2af2beb9b73d41463f5b8c45ceb4b9ae;hpb=a3cc2de9138f1ee1581f55927f33f7d72ed6207d;p=linux-2.6 diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 30480f6f2a..17b5ece8f8 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -292,20 +292,22 @@ EXPORT_SYMBOL_GPL(platform_device_add); * @pdev: platform device we're removing * * Note that this function will also release all memory- and port-based - * resources owned by the device (@dev->resource). + * resources owned by the device (@dev->resource). This function + * must _only_ be externally called in error cases. All other usage + * is a bug. */ void platform_device_del(struct platform_device *pdev) { int i; if (pdev) { + device_del(&pdev->dev); + for (i = 0; i < pdev->num_resources; i++) { struct resource *r = &pdev->resource[i]; if (r->flags & (IORESOURCE_MEM|IORESOURCE_IO)) release_resource(r); } - - device_del(&pdev->dev); } } EXPORT_SYMBOL_GPL(platform_device_del);