diff mbox series

ext2: fix missing percpu_counter_inc (fwd)

Message ID alpine.LRH.2.02.2006091312530.31685@file01.intranet.prod.int.rdu2.redhat.com
State Not Applicable
Headers show
Series ext2: fix missing percpu_counter_inc (fwd) | expand

Commit Message

Mikulas Patocka June 9, 2020, 5:14 p.m. UTC
I'm resending this because I didn't get any response.

Mikulas



---------- Forwarded message ----------
Date: Mon, 20 Apr 2020 16:02:21 -0400 (EDT)
From: Mikulas Patocka <mpatocka@redhat.com>
To: Jan Kara <jack@suse.com>
Cc: linux-ext4@vger.kernel.org
Subject: [PATCH] ext2: fix missing percpu_counter_inc

sbi->s_freeinodes_counter is only decreased by the ext2 code, it is never
increased. This patch fixes it.

Note that sbi->s_freeinodes_counter is only used in the algorithm that
tries to find the group for new allocations, so this bug is not easily
visible (the only visibility is that the group finding algorithm selects
inoptinal result).

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org

---
 fs/ext2/ialloc.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Jan Kara June 10, 2020, 8:45 a.m. UTC | #1
On Tue 09-06-20 13:14:18, Mikulas Patocka wrote:
> I'm resending this because I didn't get any response.

I'm sorry far that. The patch got buried in my inbox... I've queued it up
now. Thanks!

								Honza

> ---------- Forwarded message ----------
> Date: Mon, 20 Apr 2020 16:02:21 -0400 (EDT)
> From: Mikulas Patocka <mpatocka@redhat.com>
> To: Jan Kara <jack@suse.com>
> Cc: linux-ext4@vger.kernel.org
> Subject: [PATCH] ext2: fix missing percpu_counter_inc
> 
> sbi->s_freeinodes_counter is only decreased by the ext2 code, it is never
> increased. This patch fixes it.
> 
> Note that sbi->s_freeinodes_counter is only used in the algorithm that
> tries to find the group for new allocations, so this bug is not easily
> visible (the only visibility is that the group finding algorithm selects
> inoptinal result).
> 
> Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
> Cc: stable@vger.kernel.org
> 
> ---
>  fs/ext2/ialloc.c |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> Index: linux-2.6/fs/ext2/ialloc.c
> ===================================================================
> --- linux-2.6.orig/fs/ext2/ialloc.c	2019-09-20 14:39:07.951999000 +0200
> +++ linux-2.6/fs/ext2/ialloc.c	2020-04-20 21:33:26.389999000 +0200
> @@ -80,6 +80,7 @@ static void ext2_release_inode(struct su
>  	if (dir)
>  		le16_add_cpu(&desc->bg_used_dirs_count, -1);
>  	spin_unlock(sb_bgl_lock(EXT2_SB(sb), group));
> +	percpu_counter_inc(&EXT2_SB(sb)->s_freeinodes_counter);
>  	if (dir)
>  		percpu_counter_dec(&EXT2_SB(sb)->s_dirs_counter);
>  	mark_buffer_dirty(bh);
> @@ -528,7 +529,7 @@ got:
>  		goto fail;
>  	}
>  
> -	percpu_counter_add(&sbi->s_freeinodes_counter, -1);
> +	percpu_counter_dec(&sbi->s_freeinodes_counter);
>  	if (S_ISDIR(mode))
>  		percpu_counter_inc(&sbi->s_dirs_counter);
>  
>
diff mbox series

Patch

Index: linux-2.6/fs/ext2/ialloc.c
===================================================================
--- linux-2.6.orig/fs/ext2/ialloc.c	2019-09-20 14:39:07.951999000 +0200
+++ linux-2.6/fs/ext2/ialloc.c	2020-04-20 21:33:26.389999000 +0200
@@ -80,6 +80,7 @@  static void ext2_release_inode(struct su
 	if (dir)
 		le16_add_cpu(&desc->bg_used_dirs_count, -1);
 	spin_unlock(sb_bgl_lock(EXT2_SB(sb), group));
+	percpu_counter_inc(&EXT2_SB(sb)->s_freeinodes_counter);
 	if (dir)
 		percpu_counter_dec(&EXT2_SB(sb)->s_dirs_counter);
 	mark_buffer_dirty(bh);
@@ -528,7 +529,7 @@  got:
 		goto fail;
 	}
 
-	percpu_counter_add(&sbi->s_freeinodes_counter, -1);
+	percpu_counter_dec(&sbi->s_freeinodes_counter);
 	if (S_ISDIR(mode))
 		percpu_counter_inc(&sbi->s_dirs_counter);