From: Liao Pingfang <liao.pingfang@xxxxxxxxxx> kobject_init_and_add() takes reference even when it fails. If this function returns an error, kobject_put() must be called to properly clean up the memory associated with the object. Signed-off-by: Liao Pingfang <liao.pingfang@xxxxxxxxxx> Signed-off-by: Yi Wang <wang.yi59@xxxxxxxxxx> --- block/blk-integrity.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/block/blk-integrity.c b/block/blk-integrity.c index c03705c..118b2f2 100644 --- a/block/blk-integrity.c +++ b/block/blk-integrity.c @@ -436,8 +436,10 @@ EXPORT_SYMBOL(blk_integrity_unregister); void blk_integrity_add(struct gendisk *disk) { if (kobject_init_and_add(&disk->integrity_kobj, &integrity_ktype, - &disk_to_dev(disk)->kobj, "%s", "integrity")) + &disk_to_dev(disk)->kobj, "%s", "integrity")) { + kobject_put(&disk->integrity_kobj); return; + } kobject_uevent(&disk->integrity_kobj, KOBJ_ADD); } -- 2.9.5