* [PATCH 1/4] erofs: fix incorrect early exits for invalid metabox-enabled images
@ 2025-12-29 9:29 Gao Xiang
2025-12-29 9:29 ` [PATCH 2/4] erofs: fix incorrect early exits in volume label handling Gao Xiang
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Gao Xiang @ 2025-12-29 9:29 UTC (permalink / raw)
To: linux-erofs; +Cc: LKML, Gao Xiang
Crafted EROFS images with metadata compression enabled can trigger
incorrect early returns, leading to folio reference leaks.
However, this does not cause system crashes or other severe issues.
Fixes: 414091322c63 ("erofs: implement metadata compression")
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
---
fs/erofs/super.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/erofs/super.c b/fs/erofs/super.c
index 937a215f626c..2e4d0ea2ffa1 100644
--- a/fs/erofs/super.c
+++ b/fs/erofs/super.c
@@ -330,12 +330,13 @@ static int erofs_read_superblock(struct super_block *sb)
}
sbi->packed_nid = le64_to_cpu(dsb->packed_nid);
if (erofs_sb_has_metabox(sbi)) {
+ ret = -EFSCORRUPTED;
if (sbi->sb_size <= offsetof(struct erofs_super_block,
metabox_nid))
- return -EFSCORRUPTED;
+ goto out;
sbi->metabox_nid = le64_to_cpu(dsb->metabox_nid);
if (sbi->metabox_nid & BIT_ULL(EROFS_DIRENT_NID_METABOX_BIT))
- return -EFSCORRUPTED; /* self-loop detection */
+ goto out; /* self-loop detection */
}
sbi->inos = le64_to_cpu(dsb->inos);
--
2.43.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/4] erofs: fix incorrect early exits in volume label handling
2025-12-29 9:29 [PATCH 1/4] erofs: fix incorrect early exits for invalid metabox-enabled images Gao Xiang
@ 2025-12-29 9:29 ` Gao Xiang
2026-01-22 9:07 ` Chao Yu
2025-12-29 9:29 ` [PATCH 3/4] erofs: unexport erofs_getxattr() Gao Xiang
` (2 subsequent siblings)
3 siblings, 1 reply; 10+ messages in thread
From: Gao Xiang @ 2025-12-29 9:29 UTC (permalink / raw)
To: linux-erofs; +Cc: LKML, Gao Xiang
Crafted EROFS images containing valid volume labels can trigger
incorrect early returns, leading to folio reference leaks.
However, this does not cause system crashes or other severe issues.
Fixes: 1cf12c717741 ("erofs: Add support for FS_IOC_GETFSLABEL")
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
---
fs/erofs/super.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/fs/erofs/super.c b/fs/erofs/super.c
index 2e4d0ea2ffa1..0d4f736ae1f1 100644
--- a/fs/erofs/super.c
+++ b/fs/erofs/super.c
@@ -347,8 +347,10 @@ static int erofs_read_superblock(struct super_block *sb)
if (dsb->volume_name[0]) {
sbi->volume_name = kstrndup(dsb->volume_name,
sizeof(dsb->volume_name), GFP_KERNEL);
- if (!sbi->volume_name)
- return -ENOMEM;
+ if (!sbi->volume_name) {
+ ret = -ENOMEM;
+ goto out;
+ }
}
/* parse on-disk compression configurations */
--
2.43.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/4] erofs: unexport erofs_getxattr()
2025-12-29 9:29 [PATCH 1/4] erofs: fix incorrect early exits for invalid metabox-enabled images Gao Xiang
2025-12-29 9:29 ` [PATCH 2/4] erofs: fix incorrect early exits in volume label handling Gao Xiang
@ 2025-12-29 9:29 ` Gao Xiang
2026-01-22 9:07 ` Chao Yu
2025-12-29 9:29 ` [PATCH 4/4] erofs: unexport erofs_xattr_prefix() Gao Xiang
2026-01-22 9:06 ` [PATCH 1/4] erofs: fix incorrect early exits for invalid metabox-enabled images Chao Yu
3 siblings, 1 reply; 10+ messages in thread
From: Gao Xiang @ 2025-12-29 9:29 UTC (permalink / raw)
To: linux-erofs; +Cc: LKML, Gao Xiang
No external users other than those in xattr.c.
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
---
fs/erofs/xattr.c | 108 +++++++++++++++++++++++------------------------
fs/erofs/xattr.h | 7 ---
2 files changed, 54 insertions(+), 61 deletions(-)
diff --git a/fs/erofs/xattr.c b/fs/erofs/xattr.c
index 396536d9a862..972941ecb71c 100644
--- a/fs/erofs/xattr.c
+++ b/fs/erofs/xattr.c
@@ -125,58 +125,6 @@ static int erofs_init_inode_xattrs(struct inode *inode)
return ret;
}
-static bool erofs_xattr_user_list(struct dentry *dentry)
-{
- return test_opt(&EROFS_SB(dentry->d_sb)->opt, XATTR_USER);
-}
-
-static bool erofs_xattr_trusted_list(struct dentry *dentry)
-{
- return capable(CAP_SYS_ADMIN);
-}
-
-static int erofs_xattr_generic_get(const struct xattr_handler *handler,
- struct dentry *unused, struct inode *inode,
- const char *name, void *buffer, size_t size)
-{
- if (handler->flags == EROFS_XATTR_INDEX_USER &&
- !test_opt(&EROFS_I_SB(inode)->opt, XATTR_USER))
- return -EOPNOTSUPP;
-
- return erofs_getxattr(inode, handler->flags, name, buffer, size);
-}
-
-const struct xattr_handler erofs_xattr_user_handler = {
- .prefix = XATTR_USER_PREFIX,
- .flags = EROFS_XATTR_INDEX_USER,
- .list = erofs_xattr_user_list,
- .get = erofs_xattr_generic_get,
-};
-
-const struct xattr_handler erofs_xattr_trusted_handler = {
- .prefix = XATTR_TRUSTED_PREFIX,
- .flags = EROFS_XATTR_INDEX_TRUSTED,
- .list = erofs_xattr_trusted_list,
- .get = erofs_xattr_generic_get,
-};
-
-#ifdef CONFIG_EROFS_FS_SECURITY
-const struct xattr_handler __maybe_unused erofs_xattr_security_handler = {
- .prefix = XATTR_SECURITY_PREFIX,
- .flags = EROFS_XATTR_INDEX_SECURITY,
- .get = erofs_xattr_generic_get,
-};
-#endif
-
-const struct xattr_handler * const erofs_xattr_handlers[] = {
- &erofs_xattr_user_handler,
- &erofs_xattr_trusted_handler,
-#ifdef CONFIG_EROFS_FS_SECURITY
- &erofs_xattr_security_handler,
-#endif
- NULL,
-};
-
static int erofs_xattr_copy_to_buffer(struct erofs_xattr_iter *it,
unsigned int len)
{
@@ -391,8 +339,8 @@ static int erofs_xattr_iter_shared(struct erofs_xattr_iter *it,
return i ? ret : -ENODATA;
}
-int erofs_getxattr(struct inode *inode, int index, const char *name,
- void *buffer, size_t buffer_size)
+static int erofs_getxattr(struct inode *inode, int index, const char *name,
+ void *buffer, size_t buffer_size)
{
int ret;
unsigned int hashbit;
@@ -462,6 +410,58 @@ ssize_t erofs_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size)
return ret ? ret : it.buffer_ofs;
}
+static bool erofs_xattr_user_list(struct dentry *dentry)
+{
+ return test_opt(&EROFS_SB(dentry->d_sb)->opt, XATTR_USER);
+}
+
+static bool erofs_xattr_trusted_list(struct dentry *dentry)
+{
+ return capable(CAP_SYS_ADMIN);
+}
+
+static int erofs_xattr_generic_get(const struct xattr_handler *handler,
+ struct dentry *unused, struct inode *inode,
+ const char *name, void *buffer, size_t size)
+{
+ if (handler->flags == EROFS_XATTR_INDEX_USER &&
+ !test_opt(&EROFS_I_SB(inode)->opt, XATTR_USER))
+ return -EOPNOTSUPP;
+
+ return erofs_getxattr(inode, handler->flags, name, buffer, size);
+}
+
+const struct xattr_handler erofs_xattr_user_handler = {
+ .prefix = XATTR_USER_PREFIX,
+ .flags = EROFS_XATTR_INDEX_USER,
+ .list = erofs_xattr_user_list,
+ .get = erofs_xattr_generic_get,
+};
+
+const struct xattr_handler erofs_xattr_trusted_handler = {
+ .prefix = XATTR_TRUSTED_PREFIX,
+ .flags = EROFS_XATTR_INDEX_TRUSTED,
+ .list = erofs_xattr_trusted_list,
+ .get = erofs_xattr_generic_get,
+};
+
+#ifdef CONFIG_EROFS_FS_SECURITY
+const struct xattr_handler __maybe_unused erofs_xattr_security_handler = {
+ .prefix = XATTR_SECURITY_PREFIX,
+ .flags = EROFS_XATTR_INDEX_SECURITY,
+ .get = erofs_xattr_generic_get,
+};
+#endif
+
+const struct xattr_handler * const erofs_xattr_handlers[] = {
+ &erofs_xattr_user_handler,
+ &erofs_xattr_trusted_handler,
+#ifdef CONFIG_EROFS_FS_SECURITY
+ &erofs_xattr_security_handler,
+#endif
+ NULL,
+};
+
void erofs_xattr_prefixes_cleanup(struct super_block *sb)
{
struct erofs_sb_info *sbi = EROFS_SB(sb);
diff --git a/fs/erofs/xattr.h b/fs/erofs/xattr.h
index 6317caa8413e..ee1d8c310d97 100644
--- a/fs/erofs/xattr.h
+++ b/fs/erofs/xattr.h
@@ -45,17 +45,10 @@ extern const struct xattr_handler * const erofs_xattr_handlers[];
int erofs_xattr_prefixes_init(struct super_block *sb);
void erofs_xattr_prefixes_cleanup(struct super_block *sb);
-int erofs_getxattr(struct inode *, int, const char *, void *, size_t);
ssize_t erofs_listxattr(struct dentry *, char *, size_t);
#else
static inline int erofs_xattr_prefixes_init(struct super_block *sb) { return 0; }
static inline void erofs_xattr_prefixes_cleanup(struct super_block *sb) {}
-static inline int erofs_getxattr(struct inode *inode, int index,
- const char *name, void *buffer,
- size_t buffer_size)
-{
- return -EOPNOTSUPP;
-}
#define erofs_listxattr (NULL)
#define erofs_xattr_handlers (NULL)
--
2.43.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 4/4] erofs: unexport erofs_xattr_prefix()
2025-12-29 9:29 [PATCH 1/4] erofs: fix incorrect early exits for invalid metabox-enabled images Gao Xiang
2025-12-29 9:29 ` [PATCH 2/4] erofs: fix incorrect early exits in volume label handling Gao Xiang
2025-12-29 9:29 ` [PATCH 3/4] erofs: unexport erofs_getxattr() Gao Xiang
@ 2025-12-29 9:29 ` Gao Xiang
2025-12-31 4:57 ` [PATCH v2 " Gao Xiang
2026-01-22 9:06 ` [PATCH 1/4] erofs: fix incorrect early exits for invalid metabox-enabled images Chao Yu
3 siblings, 1 reply; 10+ messages in thread
From: Gao Xiang @ 2025-12-29 9:29 UTC (permalink / raw)
To: linux-erofs; +Cc: LKML, Gao Xiang
It can be simply in xattr.c due to no external users.
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
---
fs/erofs/xattr.c | 27 +++++++++++++++++++++++++++
fs/erofs/xattr.h | 30 ------------------------------
2 files changed, 27 insertions(+), 30 deletions(-)
diff --git a/fs/erofs/xattr.c b/fs/erofs/xattr.c
index 972941ecb71c..d25c1cc1940c 100644
--- a/fs/erofs/xattr.c
+++ b/fs/erofs/xattr.c
@@ -25,6 +25,8 @@ struct erofs_xattr_iter {
struct dentry *dentry;
};
+static const char *erofs_xattr_prefix(unsigned int idx, struct dentry *dentry);
+
static int erofs_init_inode_xattrs(struct inode *inode)
{
struct erofs_inode *const vi = EROFS_I(inode);
@@ -462,6 +464,31 @@ const struct xattr_handler * const erofs_xattr_handlers[] = {
NULL,
};
+static const char *erofs_xattr_prefix(unsigned int idx, struct dentry *dentry)
+{
+ const struct xattr_handler *handler = NULL;
+
+ static const struct xattr_handler * const xattr_handler_map[] = {
+ [EROFS_XATTR_INDEX_USER] = &erofs_xattr_user_handler,
+#ifdef CONFIG_EROFS_FS_POSIX_ACL
+ [EROFS_XATTR_INDEX_POSIX_ACL_ACCESS] = &nop_posix_acl_access,
+ [EROFS_XATTR_INDEX_POSIX_ACL_DEFAULT] = &nop_posix_acl_default,
+#endif
+ [EROFS_XATTR_INDEX_TRUSTED] = &erofs_xattr_trusted_handler,
+#ifdef CONFIG_EROFS_FS_SECURITY
+ [EROFS_XATTR_INDEX_SECURITY] = &erofs_xattr_security_handler,
+#endif
+ };
+
+ if (idx && idx < ARRAY_SIZE(xattr_handler_map))
+ handler = xattr_handler_map[idx];
+
+ if (!xattr_handler_can_list(handler, dentry))
+ return NULL;
+
+ return xattr_prefix(handler);
+}
+
void erofs_xattr_prefixes_cleanup(struct super_block *sb)
{
struct erofs_sb_info *sbi = EROFS_SB(sb);
diff --git a/fs/erofs/xattr.h b/fs/erofs/xattr.h
index ee1d8c310d97..36f2667afc2d 100644
--- a/fs/erofs/xattr.h
+++ b/fs/erofs/xattr.h
@@ -11,36 +11,6 @@
#include <linux/xattr.h>
#ifdef CONFIG_EROFS_FS_XATTR
-extern const struct xattr_handler erofs_xattr_user_handler;
-extern const struct xattr_handler erofs_xattr_trusted_handler;
-extern const struct xattr_handler erofs_xattr_security_handler;
-
-static inline const char *erofs_xattr_prefix(unsigned int idx,
- struct dentry *dentry)
-{
- const struct xattr_handler *handler = NULL;
-
- static const struct xattr_handler * const xattr_handler_map[] = {
- [EROFS_XATTR_INDEX_USER] = &erofs_xattr_user_handler,
-#ifdef CONFIG_EROFS_FS_POSIX_ACL
- [EROFS_XATTR_INDEX_POSIX_ACL_ACCESS] = &nop_posix_acl_access,
- [EROFS_XATTR_INDEX_POSIX_ACL_DEFAULT] = &nop_posix_acl_default,
-#endif
- [EROFS_XATTR_INDEX_TRUSTED] = &erofs_xattr_trusted_handler,
-#ifdef CONFIG_EROFS_FS_SECURITY
- [EROFS_XATTR_INDEX_SECURITY] = &erofs_xattr_security_handler,
-#endif
- };
-
- if (idx && idx < ARRAY_SIZE(xattr_handler_map))
- handler = xattr_handler_map[idx];
-
- if (!xattr_handler_can_list(handler, dentry))
- return NULL;
-
- return xattr_prefix(handler);
-}
-
extern const struct xattr_handler * const erofs_xattr_handlers[];
int erofs_xattr_prefixes_init(struct super_block *sb);
--
2.43.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 4/4] erofs: unexport erofs_xattr_prefix()
2025-12-29 9:29 ` [PATCH 4/4] erofs: unexport erofs_xattr_prefix() Gao Xiang
@ 2025-12-31 4:57 ` Gao Xiang
2026-01-22 9:08 ` Chao Yu
0 siblings, 1 reply; 10+ messages in thread
From: Gao Xiang @ 2025-12-31 4:57 UTC (permalink / raw)
To: linux-erofs; +Cc: LKML, Gao Xiang, Hongbo Li
It can be simply in xattr.c due to no external users.
Reviewed-by: Hongbo Li <lihongbo22@huawei.com>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
---
v2:
- fix sparse warnings:
https://lore.kernel.org/r/202512311021.L0IMtTOh-lkp@intel.com
fs/erofs/xattr.c | 31 ++++++++++++++++++++++++++++---
fs/erofs/xattr.h | 30 ------------------------------
2 files changed, 28 insertions(+), 33 deletions(-)
diff --git a/fs/erofs/xattr.c b/fs/erofs/xattr.c
index 972941ecb71c..f8668157162f 100644
--- a/fs/erofs/xattr.c
+++ b/fs/erofs/xattr.c
@@ -25,6 +25,8 @@ struct erofs_xattr_iter {
struct dentry *dentry;
};
+static const char *erofs_xattr_prefix(unsigned int idx, struct dentry *dentry);
+
static int erofs_init_inode_xattrs(struct inode *inode)
{
struct erofs_inode *const vi = EROFS_I(inode);
@@ -431,14 +433,14 @@ static int erofs_xattr_generic_get(const struct xattr_handler *handler,
return erofs_getxattr(inode, handler->flags, name, buffer, size);
}
-const struct xattr_handler erofs_xattr_user_handler = {
+static const struct xattr_handler erofs_xattr_user_handler = {
.prefix = XATTR_USER_PREFIX,
.flags = EROFS_XATTR_INDEX_USER,
.list = erofs_xattr_user_list,
.get = erofs_xattr_generic_get,
};
-const struct xattr_handler erofs_xattr_trusted_handler = {
+static const struct xattr_handler erofs_xattr_trusted_handler = {
.prefix = XATTR_TRUSTED_PREFIX,
.flags = EROFS_XATTR_INDEX_TRUSTED,
.list = erofs_xattr_trusted_list,
@@ -446,7 +448,7 @@ const struct xattr_handler erofs_xattr_trusted_handler = {
};
#ifdef CONFIG_EROFS_FS_SECURITY
-const struct xattr_handler __maybe_unused erofs_xattr_security_handler = {
+static const struct xattr_handler erofs_xattr_security_handler = {
.prefix = XATTR_SECURITY_PREFIX,
.flags = EROFS_XATTR_INDEX_SECURITY,
.get = erofs_xattr_generic_get,
@@ -462,6 +464,29 @@ const struct xattr_handler * const erofs_xattr_handlers[] = {
NULL,
};
+static const char *erofs_xattr_prefix(unsigned int idx, struct dentry *dentry)
+{
+ static const struct xattr_handler * const xattr_handler_map[] = {
+ [EROFS_XATTR_INDEX_USER] = &erofs_xattr_user_handler,
+#ifdef CONFIG_EROFS_FS_POSIX_ACL
+ [EROFS_XATTR_INDEX_POSIX_ACL_ACCESS] = &nop_posix_acl_access,
+ [EROFS_XATTR_INDEX_POSIX_ACL_DEFAULT] = &nop_posix_acl_default,
+#endif
+ [EROFS_XATTR_INDEX_TRUSTED] = &erofs_xattr_trusted_handler,
+#ifdef CONFIG_EROFS_FS_SECURITY
+ [EROFS_XATTR_INDEX_SECURITY] = &erofs_xattr_security_handler,
+#endif
+ };
+ const struct xattr_handler *handler = NULL;
+
+ if (idx && idx < ARRAY_SIZE(xattr_handler_map)) {
+ handler = xattr_handler_map[idx];
+ if (xattr_handler_can_list(handler, dentry))
+ return xattr_prefix(handler);
+ }
+ return NULL;
+}
+
void erofs_xattr_prefixes_cleanup(struct super_block *sb)
{
struct erofs_sb_info *sbi = EROFS_SB(sb);
diff --git a/fs/erofs/xattr.h b/fs/erofs/xattr.h
index ee1d8c310d97..36f2667afc2d 100644
--- a/fs/erofs/xattr.h
+++ b/fs/erofs/xattr.h
@@ -11,36 +11,6 @@
#include <linux/xattr.h>
#ifdef CONFIG_EROFS_FS_XATTR
-extern const struct xattr_handler erofs_xattr_user_handler;
-extern const struct xattr_handler erofs_xattr_trusted_handler;
-extern const struct xattr_handler erofs_xattr_security_handler;
-
-static inline const char *erofs_xattr_prefix(unsigned int idx,
- struct dentry *dentry)
-{
- const struct xattr_handler *handler = NULL;
-
- static const struct xattr_handler * const xattr_handler_map[] = {
- [EROFS_XATTR_INDEX_USER] = &erofs_xattr_user_handler,
-#ifdef CONFIG_EROFS_FS_POSIX_ACL
- [EROFS_XATTR_INDEX_POSIX_ACL_ACCESS] = &nop_posix_acl_access,
- [EROFS_XATTR_INDEX_POSIX_ACL_DEFAULT] = &nop_posix_acl_default,
-#endif
- [EROFS_XATTR_INDEX_TRUSTED] = &erofs_xattr_trusted_handler,
-#ifdef CONFIG_EROFS_FS_SECURITY
- [EROFS_XATTR_INDEX_SECURITY] = &erofs_xattr_security_handler,
-#endif
- };
-
- if (idx && idx < ARRAY_SIZE(xattr_handler_map))
- handler = xattr_handler_map[idx];
-
- if (!xattr_handler_can_list(handler, dentry))
- return NULL;
-
- return xattr_prefix(handler);
-}
-
extern const struct xattr_handler * const erofs_xattr_handlers[];
int erofs_xattr_prefixes_init(struct super_block *sb);
--
2.43.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/4] erofs: fix incorrect early exits for invalid metabox-enabled images
2025-12-29 9:29 [PATCH 1/4] erofs: fix incorrect early exits for invalid metabox-enabled images Gao Xiang
` (2 preceding siblings ...)
2025-12-29 9:29 ` [PATCH 4/4] erofs: unexport erofs_xattr_prefix() Gao Xiang
@ 2026-01-22 9:06 ` Chao Yu
2026-01-22 9:17 ` Gao Xiang
3 siblings, 1 reply; 10+ messages in thread
From: Chao Yu @ 2026-01-22 9:06 UTC (permalink / raw)
To: Gao Xiang, linux-erofs; +Cc: chao, LKML
On 12/29/2025 5:29 PM, Gao Xiang wrote:
> Crafted EROFS images with metadata compression enabled can trigger
> incorrect early returns, leading to folio reference leaks.
>
> However, this does not cause system crashes or other severe issues.
>
Will be better to add:
Cc: stable@kernel.org
> Fixes: 414091322c63 ("erofs: implement metadata compression")
> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Thanks,
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/4] erofs: fix incorrect early exits in volume label handling
2025-12-29 9:29 ` [PATCH 2/4] erofs: fix incorrect early exits in volume label handling Gao Xiang
@ 2026-01-22 9:07 ` Chao Yu
0 siblings, 0 replies; 10+ messages in thread
From: Chao Yu @ 2026-01-22 9:07 UTC (permalink / raw)
To: Gao Xiang, linux-erofs; +Cc: chao, LKML
On 12/29/2025 5:29 PM, Gao Xiang wrote:
> Crafted EROFS images containing valid volume labels can trigger
> incorrect early returns, leading to folio reference leaks.
>
> However, this does not cause system crashes or other severe issues.
>
Will be better to add:
Cc: stable@kernel.org
> Fixes: 1cf12c717741 ("erofs: Add support for FS_IOC_GETFSLABEL")
> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Thanks,
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/4] erofs: unexport erofs_getxattr()
2025-12-29 9:29 ` [PATCH 3/4] erofs: unexport erofs_getxattr() Gao Xiang
@ 2026-01-22 9:07 ` Chao Yu
0 siblings, 0 replies; 10+ messages in thread
From: Chao Yu @ 2026-01-22 9:07 UTC (permalink / raw)
To: Gao Xiang, linux-erofs; +Cc: chao, LKML
On 12/29/2025 5:29 PM, Gao Xiang wrote:
> No external users other than those in xattr.c.
>
> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Thanks,
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 4/4] erofs: unexport erofs_xattr_prefix()
2025-12-31 4:57 ` [PATCH v2 " Gao Xiang
@ 2026-01-22 9:08 ` Chao Yu
0 siblings, 0 replies; 10+ messages in thread
From: Chao Yu @ 2026-01-22 9:08 UTC (permalink / raw)
To: Gao Xiang, linux-erofs; +Cc: chao, LKML, Hongbo Li
On 12/31/2025 12:57 PM, Gao Xiang wrote:
> It can be simply in xattr.c due to no external users.
>
> Reviewed-by: Hongbo Li <lihongbo22@huawei.com>
> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Thanks,
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/4] erofs: fix incorrect early exits for invalid metabox-enabled images
2026-01-22 9:06 ` [PATCH 1/4] erofs: fix incorrect early exits for invalid metabox-enabled images Chao Yu
@ 2026-01-22 9:17 ` Gao Xiang
0 siblings, 0 replies; 10+ messages in thread
From: Gao Xiang @ 2026-01-22 9:17 UTC (permalink / raw)
To: Chao Yu, linux-erofs; +Cc: LKML
On 2026/1/22 17:06, Chao Yu wrote:
> On 12/29/2025 5:29 PM, Gao Xiang wrote:
>> Crafted EROFS images with metadata compression enabled can trigger
>> incorrect early returns, leading to folio reference leaks.
>>
>> However, this does not cause system crashes or other severe issues.
>>
>
> Will be better to add:
>
> Cc: stable@kernel.org
Hi Chao,
will add later, I current have some environment issue.
Thanks,
Gao Xiang
>
>> Fixes: 414091322c63 ("erofs: implement metadata compression")
>> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
>
> Reviewed-by: Chao Yu <chao@kernel.org>
>
> Thanks,
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-01-22 9:17 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-12-29 9:29 [PATCH 1/4] erofs: fix incorrect early exits for invalid metabox-enabled images Gao Xiang
2025-12-29 9:29 ` [PATCH 2/4] erofs: fix incorrect early exits in volume label handling Gao Xiang
2026-01-22 9:07 ` Chao Yu
2025-12-29 9:29 ` [PATCH 3/4] erofs: unexport erofs_getxattr() Gao Xiang
2026-01-22 9:07 ` Chao Yu
2025-12-29 9:29 ` [PATCH 4/4] erofs: unexport erofs_xattr_prefix() Gao Xiang
2025-12-31 4:57 ` [PATCH v2 " Gao Xiang
2026-01-22 9:08 ` Chao Yu
2026-01-22 9:06 ` [PATCH 1/4] erofs: fix incorrect early exits for invalid metabox-enabled images Chao Yu
2026-01-22 9:17 ` Gao Xiang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®