From: Greg Kroah-Hartman Date: Sun, 16 Feb 2014 20:48:11 +0000 (-0800) Subject: 3.4-stable patches X-Git-Tag: v3.4.81~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2ffa747b1f1677f3b95a84ee5f8945fd14cb97d1;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches added patches: ext4-protect-group-inode-free-counting-with-group-lock.patch printk-fix-scheduling-while-atomic-problem-in-console_cpu_notify.patch --- diff --git a/queue-3.4/ext4-protect-group-inode-free-counting-with-group-lock.patch b/queue-3.4/ext4-protect-group-inode-free-counting-with-group-lock.patch new file mode 100644 index 00000000000..89c04987b16 --- /dev/null +++ b/queue-3.4/ext4-protect-group-inode-free-counting-with-group-lock.patch @@ -0,0 +1,64 @@ +From 6f2e9f0e7d795214b9cf5a47724a273b705fd113 Mon Sep 17 00:00:00 2001 +From: Tao Ma +Date: Mon, 28 May 2012 18:20:59 -0400 +Subject: ext4: protect group inode free counting with group lock + +From: Tao Ma + +commit 6f2e9f0e7d795214b9cf5a47724a273b705fd113 upstream. + +Now when we set the group inode free count, we don't have a proper +group lock so that multiple threads may decrease the inode free +count at the same time. And e2fsck will complain something like: + +Free inodes count wrong for group #1 (1, counted=0). +Fix? no + +Free inodes count wrong for group #2 (3, counted=0). +Fix? no + +Directories count wrong for group #2 (780, counted=779). +Fix? no + +Free inodes count wrong for group #3 (2272, counted=2273). +Fix? no + +So this patch try to protect it with the ext4_lock_group. + +btw, it is found by xfstests test case 269 and the volume is +mkfsed with the parameter +"-O ^resize_inode,^uninit_bg,extent,meta_bg,flex_bg,ext_attr" +and I have run it 100 times and the error in e2fsck doesn't +show up again. + +Signed-off-by: Tao Ma +Signed-off-by: "Theodore Ts'o" +Signed-off-by: Benjamin LaHaise +Signed-off-by: Greg Kroah-Hartman + + +--- + fs/ext4/ialloc.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/fs/ext4/ialloc.c ++++ b/fs/ext4/ialloc.c +@@ -778,6 +778,8 @@ got: + ext4_itable_unused_set(sb, gdp, + (EXT4_INODES_PER_GROUP(sb) - ino)); + up_read(&grp->alloc_sem); ++ } else { ++ ext4_lock_group(sb, group); + } + ext4_free_inodes_set(sb, gdp, ext4_free_inodes_count(sb, gdp) - 1); + if (S_ISDIR(mode)) { +@@ -790,8 +792,8 @@ got: + } + if (EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) { + gdp->bg_checksum = ext4_group_desc_csum(sbi, group, gdp); +- ext4_unlock_group(sb, group); + } ++ ext4_unlock_group(sb, group); + + BUFFER_TRACE(group_desc_bh, "call ext4_handle_dirty_metadata"); + err = ext4_handle_dirty_metadata(handle, NULL, group_desc_bh); diff --git a/queue-3.4/printk-fix-scheduling-while-atomic-problem-in-console_cpu_notify.patch b/queue-3.4/printk-fix-scheduling-while-atomic-problem-in-console_cpu_notify.patch new file mode 100644 index 00000000000..4e713552885 --- /dev/null +++ b/queue-3.4/printk-fix-scheduling-while-atomic-problem-in-console_cpu_notify.patch @@ -0,0 +1,34 @@ +From 85eae82a0855d49852b87deac8653e4ebc8b291f Mon Sep 17 00:00:00 2001 +From: "Paul E. McKenney" +Date: Mon, 15 Oct 2012 21:35:59 -0700 +Subject: printk: Fix scheduling-while-atomic problem in console_cpu_notify() + +From: "Paul E. McKenney" + +commit 85eae82a0855d49852b87deac8653e4ebc8b291f upstream. + +The console_cpu_notify() function runs with interrupts disabled in the +CPU_DYING case. It therefore cannot block, for example, as will happen +when it calls console_lock(). Therefore, remove the CPU_DYING leg of +the switch statement to avoid this problem. + +Signed-off-by: Paul E. McKenney +Reviewed-by: Srivatsa S. Bhat +Signed-off-by: Linus Torvalds +Cc: Guillaume Morin +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/printk.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/kernel/printk.c ++++ b/kernel/printk.c +@@ -1172,7 +1172,6 @@ static int __cpuinit console_cpu_notify( + switch (action) { + case CPU_ONLINE: + case CPU_DEAD: +- case CPU_DYING: + case CPU_DOWN_FAILED: + case CPU_UP_CANCELED: + console_lock(); diff --git a/queue-3.4/series b/queue-3.4/series index 667adaf5eef..84b3b6c2827 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -3,3 +3,5 @@ alsa-hda-realtek-avoid-invalid-coefs-for-alc271x.patch mm-__set_page_dirty_nobuffers-uses-spin_lock_irqsave-instead-of-spin_lock_irq.patch mm-__set_page_dirty-uses-spin_lock_irqsave-instead-of-spin_lock_irq.patch x86-hweight-fix-bug-when-booting-with-config_gcov_profile_all-y.patch +printk-fix-scheduling-while-atomic-problem-in-console_cpu_notify.patch +ext4-protect-group-inode-free-counting-with-group-lock.patch