Never directly free @dev after calling device_register(), even if it returned an error! Always use put_device() to give up the reference initialized. Signed-off-by: Arvind Yadav <arvind.yadav.cs@xxxxxxxxx> --- changes in v2: Removed kfree() call for @dev. changes in v3: Add put_device() in place of kfree(). drivers/ssb/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c index 65420a9..e732fd3 100644 --- a/drivers/ssb/main.c +++ b/drivers/ssb/main.c @@ -522,7 +522,7 @@ static int ssb_devices_register(struct ssb_bus *bus) /* Set dev to NULL to not unregister * dev on error unwinding. */ sdev->dev = NULL; - kfree(devwrap); + put_device(dev); goto error; } dev_idx++; -- 1.9.1