Re: [PATCH 2/2] i915: do not leak module ref counter

From: Sergey Senozhatsky
Date: Fri Aug 02 2019 - 09:35:12 EST


On (08/02/19 22:15), Sergey Senozhatsky wrote:
[..]
> > > Looking around, it looks like we always need to drop type after
> > > mounting. Should the
> > > put_filesystem(type);
> > > be here instead?
> > >
> > > Anyway, nice catch.
> >
> > Sigh. put_filesystem() is part of fs internals. I'd be tempted to add
>
> Good catch!
>
> So we can switch to vfs_kern_mount(), I guess, but pass different options,
> depending on has_transparent_hugepage().

Hmm. This doesn't look exactly right. It appears that vfs_kern_mount()
has a slightly different purpose. It's for drivers which register their
own fstype and fs_context/sb callbacks. A typical usage would be

static struct file_system_type nfsd_fs_type = {
.ownerâ â = THIS_MODULE,
.nameâ â = "nfsd",
.init_fs_context = nfsd_init_fs_context,
.kill_sbâ = nfsd_umount,
};
MODULE_ALIAS_FS("nfsd");

vfs_kern_mount(&nfsd_fs_type, SB_KERNMOUNT, "nfsd", NULL);

i915 is a different beast, it just wants to mount fs and reconfigure
it, it doesn't want to be an fs. So it seems that current kern_mount()
is actually right.

Maybe we need to export put_filesystem() instead.

-ss