asoc-intel-nhlt-fix-debug-print-format.patch
asoc-intel-skylake-use-correct-function-to-access-iomem-space.patch
asoc-intel-fix-use-of-potentially-uninitialized-variable.patch
-staging-erofs-fix-an-error-handling-in-erofs_readdir.patch
arm-samsung-fix-system-restart-on-s3c6410.patch
arm-zynq-use-memcpy_toio-instead-of-memcpy-on-smp-bring-up.patch
revert-arm64-remove-unnecessary-isbs-from-set_-pte-pmd-pud.patch
+++ /dev/null
-From acb383f1dcb4f1e79b66d4be3a0b6f519a957b0d Mon Sep 17 00:00:00 2001
-From: Gao Xiang <xiang@kernel.org>
-Date: Sun, 18 Aug 2019 20:54:57 +0800
-Subject: staging: erofs: fix an error handling in erofs_readdir()
-
-From: Gao Xiang <gaoxiang25@huawei.com>
-
-commit acb383f1dcb4f1e79b66d4be3a0b6f519a957b0d upstream.
-
-Richard observed a forever loop of erofs_read_raw_page() [1]
-which can be generated by forcely setting ->u.i_blkaddr
-to 0xdeadbeef (as my understanding block layer can
-handle access beyond end of device correctly).
-
-After digging into that, it seems the problem is highly
-related with directories and then I found the root cause
-is an improper error handling in erofs_readdir().
-
-Let's fix it now.
-
-[1] https://lore.kernel.org/r/1163995781.68824.1566084358245.JavaMail.zimbra@nod.at/
-
-Reported-by: Richard Weinberger <richard@nod.at>
-Fixes: 3aa8ec716e52 ("staging: erofs: add directory operations")
-Cc: <stable@vger.kernel.org> # 4.19+
-Reviewed-by: Chao Yu <yuchao0@huawei.com>
-Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
-Link: https://lore.kernel.org/r/20190818125457.25906-1-hsiangkao@aol.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/staging/erofs/dir.c | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
---- a/drivers/staging/erofs/dir.c
-+++ b/drivers/staging/erofs/dir.c
-@@ -100,8 +100,15 @@ static int erofs_readdir(struct file *f,
- unsigned nameoff, maxsize;
-
- dentry_page = read_mapping_page(mapping, i, NULL);
-- if (IS_ERR(dentry_page))
-- continue;
-+ if (dentry_page == ERR_PTR(-ENOMEM)) {
-+ err = -ENOMEM;
-+ break;
-+ } else if (IS_ERR(dentry_page)) {
-+ errln("fail to readdir of logical block %u of nid %llu",
-+ i, EROFS_V(dir)->nid);
-+ err = -EFSCORRUPTED;
-+ break;
-+ }
-
- lock_page(dentry_page);
- de = (struct erofs_dirent *)kmap(dentry_page);