On Mon, Aug 23, 2021 at 01:29:28PM -0700, Luis Chamberlain wrote: > - add_disk(md->disk); > + r = add_disk(md->disk); > + if (r) > + goto out_cleanup_disk; > > r = dm_sysfs_init(md); > - if (r) { > - del_gendisk(md->disk); > - return r; > - } > + if (r) > + goto out_del_gendisk; > md->type = type; > return 0; > + > +out_cleanup_disk: > + blk_cleanup_disk(md->disk); > +out_del_gendisk: > + del_gendisk(md->disk); > + return r; I think the add_disk should just return r. If you look at the callers they eventualy end up in dm_table_destroy, which does this cleanup.