summaryrefslogtreecommitdiff
path: root/sys-fs/erofs-utils/files/1.4-dump-fix-de-nid-issues.patch
diff options
context:
space:
mode:
Diffstat (limited to 'sys-fs/erofs-utils/files/1.4-dump-fix-de-nid-issues.patch')
-rw-r--r--sys-fs/erofs-utils/files/1.4-dump-fix-de-nid-issues.patch134
1 files changed, 0 insertions, 134 deletions
diff --git a/sys-fs/erofs-utils/files/1.4-dump-fix-de-nid-issues.patch b/sys-fs/erofs-utils/files/1.4-dump-fix-de-nid-issues.patch
deleted file mode 100644
index 4c833d737fa2..000000000000
--- a/sys-fs/erofs-utils/files/1.4-dump-fix-de-nid-issues.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From 35b15cc9c75cc2d7782f36433bad90326e9cb060 Mon Sep 17 00:00:00 2001
-From: Gao Xiang <xiang@kernel.org>
-Date: Mon, 22 Nov 2021 07:48:48 +0800
-Subject: [PATCH 1/2] erofs-utils: dump: fix de->nid issues
-
-As David Michael reported, "
- In file included from main.c:11:
- main.c: In function 'erofs_checkdirent':
- ../include/erofs/print.h:68:25: error: format '%llu' expects argument of type 'long long unsigned int', but argument 3 has type '__le64' {aka 'long unsigned int'} [-Werror=format=]
- 68 | "<E> " PR_FMT_FUNC_LINE(fmt), \
- | ^~~~~~
- main.c:264:17: note: in expansion of macro 'erofs_err'
- 264 | erofs_err("invalid file type %llu", de->nid);
- | ^~~~~~~~~
- main.c: In function 'erofs_read_dirent':
- ../include/erofs/print.h:68:25: error: format '%llu' expects argument of type 'long long unsigned int', but argument 3 has type '__le64' {aka 'long unsigned int'} [-Werror=format=]
- 68 | "<E> " PR_FMT_FUNC_LINE(fmt), \
- | ^~~~~~
- main.c:303:25: note: in expansion of macro 'erofs_err'
- 303 | erofs_err("parse dir nid %llu error occurred\n",
- | ^~~~~~~~~
- cc1: all warnings being treated as errors
-"
-
-Also there are many de->nid lacking of endianness handling.
-Should fix them together.
-
-Link: https://lore.kernel.org/r/20211121234848.12663-1-xiang@kernel.org
-Fixes: cf8be8a4352a ("erofs-utils: dump: add feature for collecting filesystem statistics")
-Cc: Wang Qi <mpiglet@outlook.com>
-Cc: Guo Xuenan <guoxuenan@huawei.com>
-Reported-by: David Michael <fedora.dm0@gmail.com>
-Signed-off-by: Gao Xiang <xiang@kernel.org>
----
- dump/main.c | 31 ++++++++++++++++---------------
- 1 file changed, 16 insertions(+), 15 deletions(-)
-
-diff --git a/dump/main.c b/dump/main.c
-index b7560ec..f85903b 100644
---- a/dump/main.c
-+++ b/dump/main.c
-@@ -242,11 +242,12 @@ static inline int erofs_checkdirent(struct erofs_dirent *de,
- {
- int dname_len;
- unsigned int nameoff = le16_to_cpu(de->nameoff);
-+ erofs_nid_t nid = le64_to_cpu(de->nid);
-
- if (nameoff < sizeof(struct erofs_dirent) ||
- nameoff >= PAGE_SIZE) {
- erofs_err("invalid de[0].nameoff %u @ nid %llu",
-- nameoff, de->nid | 0ULL);
-+ nameoff, nid | 0ULL);
- return -EFSCORRUPTED;
- }
-
-@@ -255,13 +256,12 @@ static inline int erofs_checkdirent(struct erofs_dirent *de,
- /* a corrupted entry is found */
- if (nameoff + dname_len > maxsize ||
- dname_len > EROFS_NAME_LEN) {
-- erofs_err("bogus dirent @ nid %llu",
-- le64_to_cpu(de->nid) | 0ULL);
-+ erofs_err("bogus dirent @ nid %llu", nid | 0ULL);
- DBG_BUGON(1);
- return -EFSCORRUPTED;
- }
- if (de->file_type >= EROFS_FT_MAX) {
-- erofs_err("invalid file type %llu", de->nid);
-+ erofs_err("invalid file type %llu", nid | 0ULL);
- return -EFSCORRUPTED;
- }
- return dname_len;
-@@ -273,7 +273,7 @@ static int erofs_read_dirent(struct erofs_dirent *de,
- {
- int err;
- erofs_off_t occupied_size = 0;
-- struct erofs_inode inode = { .nid = de->nid };
-+ struct erofs_inode inode = { .nid = le64_to_cpu(de->nid) };
-
- stats.files++;
- stats.file_category_stat[de->file_type]++;
-@@ -296,12 +296,12 @@ static int erofs_read_dirent(struct erofs_dirent *de,
- update_file_size_statatics(occupied_size, inode.i_size);
- }
-
-- if ((de->file_type == EROFS_FT_DIR)
-- && de->nid != nid && de->nid != parent_nid) {
-- err = erofs_read_dir(de->nid, nid);
-+ if (de->file_type == EROFS_FT_DIR && inode.nid != nid &&
-+ inode.nid != parent_nid) {
-+ err = erofs_read_dir(inode.nid, nid);
- if (err) {
- erofs_err("parse dir nid %llu error occurred\n",
-- de->nid);
-+ inode.nid | 0ULL);
- return err;
- }
- }
-@@ -338,7 +338,8 @@ static int erofs_read_dir(erofs_nid_t nid, erofs_nid_t parent_nid)
- int ret;
-
- /* skip "." and ".." dentry */
-- if (de->nid == nid || de->nid == parent_nid) {
-+ if (le64_to_cpu(de->nid) == nid ||
-+ le64_to_cpu(de->nid) == parent_nid) {
- de++;
- continue;
- }
-@@ -399,18 +400,18 @@ static int erofs_get_pathname(erofs_nid_t nid, erofs_nid_t parent_nid,
- if (len < 0)
- return len;
-
-- if (de->nid == target) {
-+ if (le64_to_cpu(de->nid) == target) {
- memcpy(path + pos, dname, len);
- path[pos + len] = '\0';
- return 0;
- }
-
- if (de->file_type == EROFS_FT_DIR &&
-- de->nid != parent_nid &&
-- de->nid != nid) {
-+ le64_to_cpu(de->nid) != parent_nid &&
-+ le64_to_cpu(de->nid) != nid) {
- memcpy(path + pos, dname, len);
-- err = erofs_get_pathname(de->nid, nid,
-- target, path, pos + len);
-+ err = erofs_get_pathname(le64_to_cpu(de->nid),
-+ nid, target, path, pos + len);
- if (!err)
- return 0;
- memset(path + pos, 0, len);
---
-2.34.1
-