Re: [PATCH] fs: super: use GFP_KERNEL instead of GFP_USER for super block allocation

From: Jan Kara
Date: Fri Dec 08 2023 - 12:23:14 EST


On Fri 08-12-23 16:10:22, Alexander Mikhalitsyn wrote:
> There is no reason to use a GFP_USER flag for struct super_block allocation
> in the alloc_super(). Instead, let's use GFP_KERNEL for that.
>
> From the memory management perspective, the only difference between
> GFP_USER and GFP_KERNEL is that GFP_USER allocations are tied to a cpuset,
> while GFP_KERNEL ones are not.
>
> There is no real issue and this is not a candidate to go to the stable,
> but let's fix it for a consistency sake.
>
> Cc: Jan Kara <jack@xxxxxxx>
> Cc: Alexander Viro <viro@xxxxxxxxxxxxxxxxxx>
> Cc: Christian Brauner <brauner@xxxxxxxxxx>
> Cc: linux-fsdevel@xxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> Signed-off-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@xxxxxxxxxxxxx>

Yeah, since we allocate other filesystem objects with GFP_KERNEL as well I
agree. Feel free to add:

Reviewed-by: Jan Kara <jack@xxxxxxx>

Honza

> diff --git a/fs/super.c b/fs/super.c
> index 076392396e72..6fe482371633 100644
> --- a/fs/super.c
> +++ b/fs/super.c
> @@ -323,7 +323,7 @@ static void destroy_unused_super(struct super_block *s)
> static struct super_block *alloc_super(struct file_system_type *type, int flags,
> struct user_namespace *user_ns)
> {
> - struct super_block *s = kzalloc(sizeof(struct super_block), GFP_USER);
> + struct super_block *s = kzalloc(sizeof(struct super_block), GFP_KERNEL);
> static const struct super_operations default_op;
> int i;
>
> --
> 2.34.1
>
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR