From f4d59fbd452ceb4cc89cdb85cc8be98e70f52aa7 Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Wed, 2 May 2007 20:55:54 +0200 Subject: [PATCH] --- yaml --- r: 53385 b: refs/heads/master c: dc4c15d44b2b43279b2667baa7645c65c2ff960e h: refs/heads/master i: 53383: c17a099de663574402e23d3c9fb1394a6fa3ba15 v: v3 --- [refs] | 2 +- trunk/drivers/base/platform.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index ba4799c80da1..a5448d743042 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c7308c81a8220ab68eebfadde37db881a2800064 +refs/heads/master: dc4c15d44b2b43279b2667baa7645c65c2ff960e diff --git a/trunk/drivers/base/platform.c b/trunk/drivers/base/platform.c index 30480f6f2af2..17b5ece8f82c 100644 --- a/trunk/drivers/base/platform.c +++ b/trunk/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);