[PATCH] staging: wilc1000: fix undefined reference to `__this_module' compilation error

Greg KH gregkh at linuxfoundation.org
Thu Aug 9 12:13:24 UTC 2018


On Thu, Aug 09, 2018 at 01:43:58PM +0300, Dan Carpenter wrote:
> On Thu, Aug 09, 2018 at 01:08:38PM +0300, Dan Carpenter wrote:
> > On Thu, Aug 09, 2018 at 12:13:06PM +0530, Ajay Singh wrote:
> > >  	wilc_dir = debugfs_create_dir("wilc_wifi", NULL);
> > > -	for (i = 0; i < ARRAY_SIZE(debugfs_info); i++) {
> > > -		info = &debugfs_info[i];
> > > -		debugfs_create_file(info->name,
> > > -				    info->perm,
> > > -				    wilc_dir,
> > > -				    &info->data,
> > > -				    &info->fops);
> > > +	if (IS_ERR_OR_NULL(wilc_dir)) {
> > > +		pr_err("Error creating debugfs\n");
> > > +		return -EFAULT;
> > >  	}
> > 
> > Just check for NULL.  If someone builds without debugfs enabled in their
> > .config, that's their choice.  No need to print a warning.
> > 
> 
> Reading it again, I'm not sure my email was clear...  Just do this:
> 
> 	wilc_dir = debugfs_create_dir("wilc_wifi", NULL);
> 	if (!wilc_dir)) {
> 		pr_err("Error creating debugfs/wilc_wifi/\n");
> 		return;
> 	}
> 
> If debugfs_create_dir() returns an error pointer it means all the other
> debugfs functions are also just no-op stub functions.  Passing an error
> pointer to them is harmless.

No, please never care about the return value of a debugfs call, it
should never cause your code flow to do anything different.  THis should
just be:
	wilc_dir = debugfs_create_dir("wilc_wifi", NULL);
and then keep on going.  You can always pass the return value of a
debugfs call to another one, no need to check anything.

I've done a large sweep of the kernel tree for most of this pattern for
4.18, and will keep doing it over time, as it keeps creeping back.

greg k-h


More information about the devel mailing list