From e11f9a94c5c20c60192b7708e7c33841d97832b3 Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Tue, 19 Aug 2014 12:10:55 -0400 Subject: [PATCH] Fix NFSv3 oops (rhbz 1131551) --- kernel.spec | 9 ++++ ...l-check-get_acl-result-with-IS_ERR_O.patch | 41 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 nfs3_list_one_acl-check-get_acl-result-with-IS_ERR_O.patch diff --git a/kernel.spec b/kernel.spec index d8fb7ff8b..ae8165dd8 100644 --- a/kernel.spec +++ b/kernel.spec @@ -653,6 +653,9 @@ Patch25120: 0001-xhci-Blacklist-using-streams-on-the-Etron-EJ168-cont.patch #rhbz 1128472 Patch25121: 0001-uas-Limit-qdepth-to-32-when-connected-over-usb-2.patch +#rhbz 1131551 +Patch25122: nfs3_list_one_acl-check-get_acl-result-with-IS_ERR_O.patch + # git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel Patch30000: kernel-arm64.patch @@ -1391,6 +1394,9 @@ ApplyPatch 0001-xhci-Blacklist-using-streams-on-the-Etron-EJ168-cont.patch #rhbz 1128472 ApplyPatch 0001-uas-Limit-qdepth-to-32-when-connected-over-usb-2.patch +#rhbz 1131551 +ApplyPatch nfs3_list_one_acl-check-get_acl-result-with-IS_ERR_O.patch + %if 0%{?aarch64patches} ApplyPatch kernel-arm64.patch %ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does. @@ -2273,6 +2279,9 @@ fi # ||----w | # || || %changelog +* Tue Aug 19 2014 Josh Boyer +- Fix NFSv3 oops (rhbz 1131551) + * Fri Aug 15 2014 Peter Robinson - ARM updates for 3.16 - Cleanup some old removed options diff --git a/nfs3_list_one_acl-check-get_acl-result-with-IS_ERR_O.patch b/nfs3_list_one_acl-check-get_acl-result-with-IS_ERR_O.patch new file mode 100644 index 000000000..5f48a1262 --- /dev/null +++ b/nfs3_list_one_acl-check-get_acl-result-with-IS_ERR_O.patch @@ -0,0 +1,41 @@ +Bugzilla: 1131551 +Upstream-status: 3.17-rc1 and Cc'd to stable + +From 7a9e75a185e6b3a3860e6a26fb6e88691fc2c9d9 Mon Sep 17 00:00:00 2001 +From: Andrey Utkin +Date: Sat, 26 Jul 2014 14:58:01 +0300 +Subject: [PATCH] nfs3_list_one_acl(): check get_acl() result with + IS_ERR_OR_NULL + +There was a check for result being not NULL. But get_acl() may return +NULL, or ERR_PTR, or actual pointer. +The purpose of the function where current change is done is to "list +ACLs only when they are available", so any error condition of get_acl() +mustn't be elevated, and returning 0 there is still valid. + +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=81111 +Signed-off-by: Andrey Utkin +Reviewed-by: Christoph Hellwig +Fixes: 74adf83f5d77 (nfs: only show Posix ACLs in listxattr if actually...) +Cc: stable@vger.kernel.org # 3.14+ +Signed-off-by: Trond Myklebust +--- + fs/nfs/nfs3acl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/fs/nfs/nfs3acl.c b/fs/nfs/nfs3acl.c +index 8f854dde4150..d0fec260132a 100644 +--- a/fs/nfs/nfs3acl.c ++++ b/fs/nfs/nfs3acl.c +@@ -256,7 +256,7 @@ nfs3_list_one_acl(struct inode *inode, int type, const char *name, void *data, + char *p = data + *result; + + acl = get_acl(inode, type); +- if (!acl) ++ if (IS_ERR_OR_NULL(acl)) + return 0; + + posix_acl_release(acl); +-- +1.9.3 +