From: Dave Young In kobject_register, the kobject reference is get in kobject_init, and then kobject_add. If kobject_add fail, it will only cleanup the reference got by itself. Signed-off-by: Dave Young Reviewed-by: Pekka Enberg Cc: Greg KH Cc: Peter Osterlund Cc: Jens Axboe Signed-off-by: Andrew Morton --- drivers/block/pktcdvd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff -puN drivers/block/pktcdvd.c~pktcdvd-add-kobject_put-when-kobject-register-fails drivers/block/pktcdvd.c --- a/drivers/block/pktcdvd.c~pktcdvd-add-kobject_put-when-kobject-register-fails +++ a/drivers/block/pktcdvd.c @@ -117,8 +117,10 @@ static struct pktcdvd_kobj* pkt_kobj_cre p->kobj.parent = parent; p->kobj.ktype = ktype; p->pd = pd; - if (kobject_register(&p->kobj) != 0) + if (kobject_register(&p->kobj) != 0) { + kobject_put(&p->kobj); return NULL; + } return p; } /* _