]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.7-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Oct 2016 07:30:03 +0000 (09:30 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Oct 2016 07:30:03 +0000 (09:30 +0200)
added patches:
make-__xfs_xattr_put_listen-preperly-report-errors.patch

queue-4.7/make-__xfs_xattr_put_listen-preperly-report-errors.patch [new file with mode: 0644]
queue-4.7/series [new file with mode: 0644]

diff --git a/queue-4.7/make-__xfs_xattr_put_listen-preperly-report-errors.patch b/queue-4.7/make-__xfs_xattr_put_listen-preperly-report-errors.patch
new file mode 100644 (file)
index 0000000..3ba51d0
--- /dev/null
@@ -0,0 +1,46 @@
+From 791cc43b36eb1f88166c8505900cad1b43c7fe1a Mon Sep 17 00:00:00 2001
+From: Artem Savkov <asavkov@redhat.com>
+Date: Wed, 14 Sep 2016 07:40:35 +1000
+Subject: Make __xfs_xattr_put_listen preperly report errors.
+
+From: Artem Savkov <asavkov@redhat.com>
+
+commit 791cc43b36eb1f88166c8505900cad1b43c7fe1a upstream.
+
+Commit 2a6fba6 "xfs: only return -errno or success from attr ->put_listent"
+changes the returnvalue of __xfs_xattr_put_listen to 0 in case when there is
+insufficient space in the buffer assuming that setting context->count to -1
+would be enough, but all of the ->put_listent callers only check seen_enough.
+This results in a failed assertion:
+XFS: Assertion failed: context->count >= 0, file: fs/xfs/xfs_xattr.c, line: 175
+in insufficient buffer size case.
+
+This is only reproducible with at least 2 xattrs and only when the buffer
+gets depleted before the last one.
+
+Furthermore if buffersize is such that it is enough to hold the last xattr's
+name, but not enough to hold the sum of preceeding xattr names listxattr won't
+fail with ERANGE, but will suceed returning last xattr's name without the
+first character. The first character end's up overwriting data stored at
+(context->alist - 1).
+
+Signed-off-by: Artem Savkov <asavkov@redhat.com>
+Reviewed-by: Dave Chinner <dchinner@redhat.com>
+Signed-off-by: Dave Chinner <david@fromorbit.com>
+Cc: Eric Sandeen <sandeen@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/xfs/xfs_xattr.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/fs/xfs/xfs_xattr.c
++++ b/fs/xfs/xfs_xattr.c
+@@ -147,6 +147,7 @@ __xfs_xattr_put_listent(
+       arraytop = context->count + prefix_len + namelen + 1;
+       if (arraytop > context->firstu) {
+               context->count = -1;    /* insufficient space */
++              context->seen_enough = 1;
+               return 0;
+       }
+       offset = (char *)context->alist + context->count;
diff --git a/queue-4.7/series b/queue-4.7/series
new file mode 100644 (file)
index 0000000..1b26167
--- /dev/null
@@ -0,0 +1 @@
+make-__xfs_xattr_put_listen-preperly-report-errors.patch