Re: [PATCH] backing-dev: no need to check return value of debugfs_create functions

From: Greg Kroah-Hartman
Date: Tue Jan 22 2019 - 11:25:12 EST


On Tue, Jan 22, 2019 at 05:07:59PM +0100, Sebastian Andrzej Siewior wrote:
> On 2019-01-22 16:21:07 [+0100], Greg Kroah-Hartman wrote:
> > diff --git a/mm/backing-dev.c b/mm/backing-dev.c
> > index 8a8bb8796c6c..85ef344a9c67 100644
> > --- a/mm/backing-dev.c
> > +++ b/mm/backing-dev.c
> > @@ -102,39 +102,25 @@ static int bdi_debug_stats_show(struct seq_file *m, void *v)
> > }
> > DEFINE_SHOW_ATTRIBUTE(bdi_debug_stats);
> >
> > -static int bdi_debug_register(struct backing_dev_info *bdi, const char *name)
> > +static void bdi_debug_register(struct backing_dev_info *bdi, const char *name)
> > {
> > - if (!bdi_debug_root)
> > - return -ENOMEM;
> > -
> > bdi->debug_dir = debugfs_create_dir(name, bdi_debug_root);
>
> If this fails then ->debug_dir is NULL

Wonderful, who cares :)

> > - if (!bdi->debug_dir)
> > - return -ENOMEM;
> > -
> > - bdi->debug_stats = debugfs_create_file("stats", 0444, bdi->debug_dir,
> > - bdi, &bdi_debug_stats_fops);
> > - if (!bdi->debug_stats) {
> > - debugfs_remove(bdi->debug_dir);
> > - bdi->debug_dir = NULL;
> > - return -ENOMEM;
> > - }
> >
> > - return 0;
> > + debugfs_create_file("stats", 0444, bdi->debug_dir, bdi,
> > + &bdi_debug_stats_fops);
>
> then this creates the stats file in the root folder and

True.

> > }
> >
> > static void bdi_debug_unregister(struct backing_dev_info *bdi)
> > {
> > - debugfs_remove(bdi->debug_stats);
> > - debugfs_remove(bdi->debug_dir);
> > + debugfs_remove_recursive(bdi->debug_dir);
>
> this won't remove it.

Which is fine, you don't care.

But step back, how could that original call be NULL? That only happens
if you pass it a bad parent dentry (which you didn't), or the system is
totally out of memory (in which case you don't care as everything else
is on fire).

> If you return for "debug_dir == NULL" then it is a nice cleanup.

No, that's not a valid thing to check for, you should not care as it
will not happen. And if it does happen, it's ok, it's only debugfs, no
one can rely on it, it is only for debugging.

thanks,

greg k-h