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...@gmail.com> --- arch/ia64/sn/kernel/tiocx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/ia64/sn/kernel/tiocx.c b/arch/ia64/sn/kernel/tiocx.c index 32d0380..fd515bc 100644 --- a/arch/ia64/sn/kernel/tiocx.c +++ b/arch/ia64/sn/kernel/tiocx.c @@ -209,7 +209,7 @@ cx_device_register(nasid_t nasid, int part_num, int mfg_num, dev_set_name(&cx_dev->dev, "%d", cx_dev->cx_id.nasid); r = device_register(&cx_dev->dev); if (r) { - kfree(cx_dev); + put_device(&cx_dev->dev); return r; } get_device(&cx_dev->dev); -- 2.7.4