]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0-stable patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Fri, 27 Jan 2012 00:48:35 +0000 (16:48 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 27 Jan 2012 00:48:35 +0000 (16:48 -0800)
added patches:
xfs-fix-endian-conversion-issue-in-discard-code.patch

queue-3.0/series
queue-3.0/xfs-fix-endian-conversion-issue-in-discard-code.patch [new file with mode: 0644]

index 0bd32ce916d8539cebf8447ef90bb6d1d244a9a7..f82881fca61e5871b569797ddab438394fe1f8ae 100644 (file)
@@ -13,3 +13,4 @@ ftrace-balance-records-when-updating-the-hash.patch
 ftrace-update-filter-when-tracing-enabled-in-set_ftrace_filter.patch
 ftrace-fix-unregister-ftrace_ops-accounting.patch
 ah-don-t-return-net_xmit_drop-on-input.patch
+xfs-fix-endian-conversion-issue-in-discard-code.patch
diff --git a/queue-3.0/xfs-fix-endian-conversion-issue-in-discard-code.patch b/queue-3.0/xfs-fix-endian-conversion-issue-in-discard-code.patch
new file mode 100644 (file)
index 0000000..0078b53
--- /dev/null
@@ -0,0 +1,50 @@
+From bpm@sgi.com  Thu Jan 26 16:45:31 2012
+From: bpm@sgi.com
+Date: Thu, 26 Jan 2012 13:47:42 -0600
+Subject: xfs: fix endian conversion issue in discard code
+To: stable@vger.kernel.org, xfs@oss.sgi.com, bpm@sgi.com
+Cc: Dave Chinner <dchinner@redhat.com>
+Message-ID: <1327607262-3500-2-git-send-email-bpm@sgi.com>
+
+
+From: Dave Chinner <dchinner@redhat.com>
+
+commit b1c770c273a4787069306fc82aab245e9ac72e9d upstream
+
+When finding the longest extent in an AG, we read the value directly
+out of the AGF buffer without endian conversion. This will give an
+incorrect length, resulting in FITRIM operations potentially not
+trimming everything that it should.
+
+Note, for 3.0-stable this has been modified to apply to
+fs/xfs/linux-2.6/xfs_discard.c instead of fs/xfs/xfs_discard.c.  -bpm
+
+Signed-off-by: Dave Chinner <dchinner@redhat.com>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Ben Myers <bpm@sgi.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/xfs/linux-2.6/xfs_discard.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/fs/xfs/linux-2.6/xfs_discard.c
++++ b/fs/xfs/linux-2.6/xfs_discard.c
+@@ -68,7 +68,7 @@ xfs_trim_extents(
+        * Look up the longest btree in the AGF and start with it.
+        */
+       error = xfs_alloc_lookup_le(cur, 0,
+-                                  XFS_BUF_TO_AGF(agbp)->agf_longest, &i);
++                          be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest), &i);
+       if (error)
+               goto out_del_cursor;
+@@ -84,7 +84,7 @@ xfs_trim_extents(
+               if (error)
+                       goto out_del_cursor;
+               XFS_WANT_CORRUPTED_GOTO(i == 1, out_del_cursor);
+-              ASSERT(flen <= XFS_BUF_TO_AGF(agbp)->agf_longest);
++              ASSERT(flen <= be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest));
+               /*
+                * Too small?  Give up.