From: Greg Kroah-Hartman Date: Tue, 13 Nov 2012 23:56:52 +0000 (-0800) Subject: 3.0-stable patches X-Git-Tag: v3.0.52~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4da2df1649f64494ea3edc327af4b4bac36ac424;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: xfs-fix-reading-of-wrapped-log-data.patch --- diff --git a/queue-3.0/series b/queue-3.0/series index 8bda6d07d58..4df6a7a0a79 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -35,3 +35,4 @@ drm-vmwgfx-fix-hibernation-device-reset.patch drm-i915-fixup-infoframe-support-for-sdvo.patch drm-i915-clear-the-entire-sdvo-infoframe-buffer.patch usb-mos7840-remove-unused-variable.patch +xfs-fix-reading-of-wrapped-log-data.patch diff --git a/queue-3.0/xfs-fix-reading-of-wrapped-log-data.patch b/queue-3.0/xfs-fix-reading-of-wrapped-log-data.patch new file mode 100644 index 00000000000..a39c7461b2d --- /dev/null +++ b/queue-3.0/xfs-fix-reading-of-wrapped-log-data.patch @@ -0,0 +1,39 @@ +From 6ce377afd1755eae5c93410ca9a1121dfead7b87 Mon Sep 17 00:00:00 2001 +From: Dave Chinner +Date: Fri, 2 Nov 2012 11:38:44 +1100 +Subject: xfs: fix reading of wrapped log data + +From: Dave Chinner + +commit 6ce377afd1755eae5c93410ca9a1121dfead7b87 upstream. + +Commit 4439647 ("xfs: reset buffer pointers before freeing them") in +3.0-rc1 introduced a regression when recovering log buffers that +wrapped around the end of log. The second part of the log buffer at +the start of the physical log was being read into the header buffer +rather than the data buffer, and hence recovery was seeing garbage +in the data buffer when it got to the region of the log buffer that +was incorrectly read. + +Reported-by: Torsten Kaiser +Signed-off-by: Dave Chinner +Reviewed-by: Christoph Hellwig +Reviewed-by: Mark Tinguely +Signed-off-by: Ben Myers +Signed-off-by: Greg Kroah-Hartman + +--- + fs/xfs/xfs_log_recover.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/xfs/xfs_log_recover.c ++++ b/fs/xfs/xfs_log_recover.c +@@ -3512,7 +3512,7 @@ xlog_do_recovery_pass( + * - order is important. + */ + error = xlog_bread_offset(log, 0, +- bblks - split_bblks, hbp, ++ bblks - split_bblks, dbp, + offset + BBTOB(split_bblks)); + if (error) + goto bread_err2;