From: Sasha Levin <sashal@kernel.org>
To: stable@vger.kernel.org
Cc: Gao Xiang <hsiangkao@linux.alibaba.com>, Sasha Levin <sashal@kernel.org>
Subject: Re: [PATCH 5.15.y] erofs: fix incorrect symlink detection in fast symlink
Date: Wed, 18 Dec 2024 07:34:08 -0500 [thread overview]
Message-ID: <20241218070817-693dae50bd8a8a93@stable.kernel.org> (raw)
In-Reply-To: <20241218073402.442917-1-hsiangkao@linux.alibaba.com>
[ Sasha's backport helper bot ]
Hi,
The upstream commit SHA1 provided is correct: 9ed50b8231e37b1ae863f5dec8153b98d9f389b4
Status in newer kernel trees:
6.12.y | Present (exact SHA1)
6.6.y | Present (different SHA1: 0c9b52bfee0e)
6.1.y | Present (different SHA1: ec134c1855c8)
5.15.y | Not found
Note: The patch differs from the upstream commit:
---
1: 9ed50b8231e3 ! 1: 80df2f17dee8 erofs: fix incorrect symlink detection in fast symlink
@@ Metadata
## Commit message ##
erofs: fix incorrect symlink detection in fast symlink
+ commit 9ed50b8231e37b1ae863f5dec8153b98d9f389b4 upstream.
+
Fast symlink can be used if the on-disk symlink data is stored
in the same block as the on-disk inode, so we don’t need to trigger
another I/O for symlink data. However, currently fs correction could be
@@ Commit message
Link: https://lore.kernel.org/r/bb2dd430-7de0-47da-ae5b-82ab2dd4d945@app.fastmail.com
Fixes: 431339ba9042 ("staging: erofs: add inode operations")
[ Note that it's a runtime misbehavior instead of a security issue. ]
- Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20240909031911.1174718-1-hsiangkao@linux.alibaba.com
+ Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
## fs/erofs/inode.c ##
-@@ fs/erofs/inode.c: static int erofs_fill_symlink(struct inode *inode, void *kaddr,
+@@ fs/erofs/inode.c: static int erofs_fill_symlink(struct inode *inode, void *data,
unsigned int m_pofs)
{
struct erofs_inode *vi = EROFS_I(inode);
-- unsigned int bsz = i_blocksize(inode);
+ loff_t off;
char *lnk;
- /* if it cannot be handled with fast symlink scheme */
- if (vi->datalayout != EROFS_INODE_FLAT_INLINE ||
-- inode->i_size >= bsz || inode->i_size < 0) {
+- inode->i_size >= PAGE_SIZE || inode->i_size < 0) {
+ m_pofs += vi->xattr_isize;
+ /* check if it cannot be handled with fast symlink scheme */
+ if (vi->datalayout != EROFS_INODE_FLAT_INLINE || inode->i_size < 0 ||
@@ fs/erofs/inode.c: static int erofs_fill_symlink(struct inode *inode, void *kaddr
inode->i_op = &erofs_symlink_iops;
return 0;
}
-@@ fs/erofs/inode.c: static int erofs_fill_symlink(struct inode *inode, void *kaddr,
+@@ fs/erofs/inode.c: static int erofs_fill_symlink(struct inode *inode, void *data,
if (!lnk)
return -ENOMEM;
- m_pofs += vi->xattr_isize;
-- /* inline symlink data shouldn't cross block boundary */
-- if (m_pofs + inode->i_size > bsz) {
+- /* inline symlink data shouldn't cross page boundary as well */
+- if (m_pofs + inode->i_size > PAGE_SIZE) {
- kfree(lnk);
- erofs_err(inode->i_sb,
- "inline data cross block boundary @ nid %llu",
@@ fs/erofs/inode.c: static int erofs_fill_symlink(struct inode *inode, void *kaddr
- DBG_BUGON(1);
- return -EFSCORRUPTED;
- }
- memcpy(lnk, kaddr + m_pofs, inode->i_size);
+-
+ memcpy(lnk, data + m_pofs, inode->i_size);
lnk[inode->i_size] = '\0';
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-5.15.y | Success | Success |
prev parent reply other threads:[~2024-12-18 12:34 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-18 7:34 [PATCH 5.15.y] erofs: fix incorrect symlink detection in fast symlink Gao Xiang
2024-12-18 7:34 ` Gao Xiang
2024-12-18 12:34 ` Sasha Levin [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241218070817-693dae50bd8a8a93@stable.kernel.org \
--to=sashal@kernel.org \
--cc=hsiangkao@linux.alibaba.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.