diff options
Diffstat (limited to '0001-Make-__xfs_xattr_put_listen-preperly-report-errors.patch')
-rw-r--r-- | 0001-Make-__xfs_xattr_put_listen-preperly-report-errors.patch | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/0001-Make-__xfs_xattr_put_listen-preperly-report-errors.patch b/0001-Make-__xfs_xattr_put_listen-preperly-report-errors.patch deleted file mode 100644 index c6a47831a..000000000 --- a/0001-Make-__xfs_xattr_put_listen-preperly-report-errors.patch +++ /dev/null @@ -1,44 +0,0 @@ -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: [PATCH] Make __xfs_xattr_put_listen preperly report errors. - -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> ---- - fs/xfs/xfs_xattr.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/fs/xfs/xfs_xattr.c b/fs/xfs/xfs_xattr.c -index ea62245..6290093 100644 ---- 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; --- -2.7.4 - |