On Fri, Dec 09, 2022 at 03:23:17PM +0100, Sergei Shtepa wrote: > + result = diff_io_init(); > + if (result) > + return result; > + > + result = snapimage_init(); > + if (result) > + return result; > + > + result = tracker_init(); > + if (result) > + return result; You need to clean up all these initialization if a later one fails. Also, does this really need a separate file? Any good reason to not just keep the tiny amount of init code in ctrl.c? > +static void __exit blk_snap_exit(void) > +{ > + pr_info("Unloading module\n"); Also we try to avoid these verbose messages for new code normally.