From: Andrea Righi Date: Tue, 24 Apr 2007 16:40:57 +0000 (-0400) Subject: [netdrvr] depca: handle platform_device_add() failure X-Git-Tag: v2.6.21~8^2~3 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=d91c088b39e3c66d309938de858775bb90fd1ead;p=~shefty%2Frdma-dev.git [netdrvr] depca: handle platform_device_add() failure The following patch fixes a kernel bug in depca_platform_probe(). We don't use a dynamic pointer for pldev->dev.platform_data, so it seems that the correct way to proceed if platform_device_add(pldev) fails is to explicitly set the pldev->dev.platform_data pointer to NULL, before calling the platform_device_put(pldev), or it will be kfree'ed by platform_device_release(). Signed-off-by: Jeff Garzik --- diff --git a/drivers/net/depca.c b/drivers/net/depca.c index 5113eef755b..f3807aaf10a 100644 --- a/drivers/net/depca.c +++ b/drivers/net/depca.c @@ -1491,8 +1491,9 @@ static void __init depca_platform_probe (void) depca_io_ports[i].device = pldev; if (platform_device_add(pldev)) { - platform_device_put(pldev); depca_io_ports[i].device = NULL; + pldev->dev.platform_data = NULL; + platform_device_put(pldev); continue; }