On 2019/7/1 21:55, Jessica Yu wrote: > +++ Zhiqiang Liu [28/06/19 20:32 +0800]: >> From: Zhiqiang Liu <[email protected]> >> >> Problem: Users can call ref_module func in their modules to construct >> relationships with other modules. However, the holders >> '/sys/module/<mod-name>/holders' of the target module donot include >> the users` module. So lsmod command misses detailed info of 'Used by'. >> >> Here, we will add usage link of a to b's holder_dir. >> >> Fixes: 9bea7f239 ("module: fix bne2 "gave up waiting for init of module >> libcrc32c") > > I think we can drop this tag; it doesn't fix a bug specifically > introduced by that particular commit. > Thanks for your reply. I will remove the Fixes tag in v2 patch.
>> Signed-off-by: Zhiqiang Liu <[email protected]> >> --- >> kernel/module.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/kernel/module.c b/kernel/module.c >> index 80c7c09584cf..11c6aff37b1f 100644 >> --- a/kernel/module.c >> +++ b/kernel/module.c >> @@ -871,6 +871,11 @@ int ref_module(struct module *a, struct module *b) >> ?0?2?0?2?0?2?0?2?0?2?0?2?0?2 module_put(b); >> ?0?2?0?2?0?2?0?2?0?2?0?2?0?2 return err; >> ?0?2?0?2?0?2?0?2} >> + >> +?0?2?0?2?0?2 err = sysfs_create_link(b->holders_dir, &a->mkobj.kobj, >> a->name); >> +?0?2?0?2?0?2 if (err) >> +?0?2?0?2?0?2?0?2?0?2?0?2?0?2 return err; > > We need to fix the error handling here - the module_use struct > allocated in the call to add_module_usage() needs to be freed (you > could just modify add_module_usage() to return the use pointer so that > it's easier to free from within ref_module()), module_put() needs to > be called, and the use struct should be removed from its respective > lists (see module_unload_free()). > Thanks again for your advice. We will modify add_module_usage func to return the use pointer as your suggestion. In the error handling, We will call module_put() and call list_del() to remove the use. > Thanks, > > Jessica > > > . >

