From: Greg Kroah-Hartman Date: Thu, 7 Mar 2019 18:43:00 +0000 (+0100) Subject: drop broken 4.19 erofs patch X-Git-Tag: v5.0.1~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d78a2f78f8fbc5000003a83b4acec4bd672413ca;p=thirdparty%2Fkernel%2Fstable-queue.git drop broken 4.19 erofs patch --- diff --git a/queue-4.19/series b/queue-4.19/series index 1618886a513..111aebd2a26 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -3,7 +3,6 @@ staging-erofs-fix-mis-acted-tail-merging-behavior.patch usb-serial-option-add-telit-me910-ecm-composition.patch usb-serial-cp210x-add-id-for-ingenico-3070.patch usb-serial-ftdi_sio-add-id-for-hjelmslund-electronics-usb485.patch -staging-erofs-fix-fast-symlink-w-o-xattr-when-fs-xattr-is-on.patch staging-erofs-fix-illegal-address-access-under-memory-pressure.patch staging-erofs-compressed_pages-should-not-be-accessed-again-after-freed.patch staging-comedi-ni_660x-fix-missing-break-in-switch-statement.patch diff --git a/queue-4.19/staging-erofs-fix-fast-symlink-w-o-xattr-when-fs-xattr-is-on.patch b/queue-4.19/staging-erofs-fix-fast-symlink-w-o-xattr-when-fs-xattr-is-on.patch deleted file mode 100644 index 9c9a7205dbd..00000000000 --- a/queue-4.19/staging-erofs-fix-fast-symlink-w-o-xattr-when-fs-xattr-is-on.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 7077fffcb0b0b65dc75e341306aeef4d0e7f2ec6 Mon Sep 17 00:00:00 2001 -From: Gao Xiang -Date: Mon, 14 Jan 2019 19:40:23 +0800 -Subject: staging: erofs: fix fast symlink w/o xattr when fs xattr is on - -From: Gao Xiang - -commit 7077fffcb0b0b65dc75e341306aeef4d0e7f2ec6 upstream. - -Currently, this will hit a BUG_ON for these symlinks as follows: - -- kernel message -------------[ cut here ]------------ -kernel BUG at drivers/staging/erofs/xattr.c:59! -SMP PTI -CPU: 1 PID: 1170 Comm: getllxattr Not tainted 4.20.0-rc6+ #92 -Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-2.fc27 04/01/2014 -RIP: 0010:init_inode_xattrs+0x22b/0x270 -Code: 48 0f 45 ea f0 ff 4d 34 74 0d 41 83 4c 24 e0 01 31 c0 e9 00 fe ff ff 48 89 ef e8 e0 31 9e ff eb e9 89 e8 e9 ef fd ff ff 0f 0$ - <0f> 0b 48 89 ef e8 fb f6 9c ff 48 8b 45 08 a8 01 75 24 f0 ff 4d 34 -RSP: 0018:ffffa03ac026bdf8 EFLAGS: 00010246 -------------[ cut here ]------------ -... -Call Trace: - erofs_listxattr+0x30/0x2c0 - ? selinux_inode_listxattr+0x5a/0x80 - ? kmem_cache_alloc+0x33/0x170 - ? security_inode_listxattr+0x27/0x40 - listxattr+0xaf/0xc0 - path_listxattr+0x5a/0xa0 - do_syscall_64+0x43/0xf0 - entry_SYSCALL_64_after_hwframe+0x44/0xa9 -... ----[ end trace 3c24b49408dc0c72 ]--- - -Fix it by checking ->xattr_isize in init_inode_xattrs(), -and it also fixes improper return value -ENOTSUPP -(it should be -ENODATA if xattr is enabled) for those inodes. - -Fixes: b17500a0fdba ("staging: erofs: introduce xattr & acl support") -Cc: # 4.19+ -Reported-by: Li Guifu -Tested-by: Li Guifu -Reviewed-by: Chao Yu -Signed-off-by: Gao Xiang -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/staging/erofs/inode.c | 8 ++++---- - drivers/staging/erofs/xattr.c | 25 ++++++++++++++++++++----- - 2 files changed, 24 insertions(+), 9 deletions(-) - ---- a/drivers/staging/erofs/inode.c -+++ b/drivers/staging/erofs/inode.c -@@ -184,16 +184,16 @@ static int fill_inode(struct inode *inod - /* setup the new inode */ - if (S_ISREG(inode->i_mode)) { - #ifdef CONFIG_EROFS_FS_XATTR -- if (vi->xattr_isize) -- inode->i_op = &erofs_generic_xattr_iops; -+ inode->i_op = &erofs_generic_xattr_iops; - #endif - inode->i_fop = &generic_ro_fops; - } else if (S_ISDIR(inode->i_mode)) { - inode->i_op = - #ifdef CONFIG_EROFS_FS_XATTR -- vi->xattr_isize ? &erofs_dir_xattr_iops : --#endif -+ &erofs_dir_xattr_iops; -+#else - &erofs_dir_iops; -+#endif - inode->i_fop = &erofs_dir_fops; - } else if (S_ISLNK(inode->i_mode)) { - /* by default, page_get_link is used for symlink */ ---- a/drivers/staging/erofs/xattr.c -+++ b/drivers/staging/erofs/xattr.c -@@ -46,7 +46,26 @@ static void init_inode_xattrs(struct ino - return; - - vi = EROFS_V(inode); -- BUG_ON(!vi->xattr_isize); -+ -+ /* -+ * bypass all xattr operations if ->xattr_isize is not greater than -+ * sizeof(struct erofs_xattr_ibody_header), in detail: -+ * 1) it is not enough to contain erofs_xattr_ibody_header then -+ * ->xattr_isize should be 0 (it means no xattr); -+ * 2) it is just to contain erofs_xattr_ibody_header, which is on-disk -+ * undefined right now (maybe use later with some new sb feature). -+ */ -+ if (vi->xattr_isize == sizeof(struct erofs_xattr_ibody_header)) { -+ errln("xattr_isize %d of nid %llu is not supported yet", -+ vi->xattr_isize, vi->nid); -+ return -ENOTSUPP; -+ } else if (vi->xattr_isize < sizeof(struct erofs_xattr_ibody_header)) { -+ if (unlikely(vi->xattr_isize)) { -+ DBG_BUGON(1); -+ return -EIO; /* xattr ondisk layout error */ -+ } -+ return -ENOATTR; -+ } - - sbi = EROFS_I_SB(inode); - it.blkaddr = erofs_blknr(iloc(sbi, vi->nid) + vi->inode_isize); -@@ -374,7 +393,6 @@ static int erofs_xattr_generic_get(const - struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size) - { -- struct erofs_vnode *const vi = EROFS_V(inode); - struct erofs_sb_info *const sbi = EROFS_I_SB(inode); - - switch (handler->flags) { -@@ -392,9 +410,6 @@ static int erofs_xattr_generic_get(const - return -EINVAL; - } - -- if (!vi->xattr_isize) -- return -ENOATTR; -- - return erofs_getxattr(inode, handler->flags, name, buffer, size); - } -