If we can't read the buffer, be sure to unlock the page before returning.
Signed-off-by: Matthew Wilcox (Oracle) willy@infradead.org Cc: stable@vger.kernel.org --- fs/ocfs2/symlink.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/ocfs2/symlink.c b/fs/ocfs2/symlink.c index d4c5fdcfa1e4..f5cf2255dc09 100644 --- a/fs/ocfs2/symlink.c +++ b/fs/ocfs2/symlink.c @@ -65,7 +65,7 @@ static int ocfs2_fast_symlink_read_folio(struct file *f, struct folio *folio)
if (status < 0) { mlog_errno(status); - return status; + goto out; }
fe = (struct ocfs2_dinode *) bh->b_data; @@ -76,9 +76,10 @@ static int ocfs2_fast_symlink_read_folio(struct file *f, struct folio *folio) memcpy(kaddr, link, len + 1); kunmap_atomic(kaddr); SetPageUptodate(page); +out: unlock_page(page); brelse(bh); - return 0; + return status; }
const struct address_space_operations ocfs2_fast_symlink_aops = {
On 2024/12/6 01:16, Matthew Wilcox (Oracle) wrote:
If we can't read the buffer, be sure to unlock the page before returning.
Signed-off-by: Matthew Wilcox (Oracle) willy@infradead.org Cc: stable@vger.kernel.org
fs/ocfs2/symlink.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/ocfs2/symlink.c b/fs/ocfs2/symlink.c index d4c5fdcfa1e4..f5cf2255dc09 100644 --- a/fs/ocfs2/symlink.c +++ b/fs/ocfs2/symlink.c @@ -65,7 +65,7 @@ static int ocfs2_fast_symlink_read_folio(struct file *f, struct folio *folio)
Better to move calling ocfs2_read_inode_block() here.
Thanks, Joseph
if (status < 0) { mlog_errno(status);
return status;
}goto out;
fe = (struct ocfs2_dinode *) bh->b_data; @@ -76,9 +76,10 @@ static int ocfs2_fast_symlink_read_folio(struct file *f, struct folio *folio) memcpy(kaddr, link, len + 1); kunmap_atomic(kaddr); SetPageUptodate(page); +out: unlock_page(page); brelse(bh);
- return 0;
- return status;
} const struct address_space_operations ocfs2_fast_symlink_aops = {
On Sat, Dec 14, 2024 at 08:03:30PM +0800, Joseph Qi wrote:
On 2024/12/6 01:16, Matthew Wilcox (Oracle) wrote:
If we can't read the buffer, be sure to unlock the page before returning.
Signed-off-by: Matthew Wilcox (Oracle) willy@infradead.org Cc: stable@vger.kernel.org
fs/ocfs2/symlink.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/ocfs2/symlink.c b/fs/ocfs2/symlink.c index d4c5fdcfa1e4..f5cf2255dc09 100644 --- a/fs/ocfs2/symlink.c +++ b/fs/ocfs2/symlink.c @@ -65,7 +65,7 @@ static int ocfs2_fast_symlink_read_folio(struct file *f, struct folio *folio)
Better to move calling ocfs2_read_inode_block() here.
Hm? This is a bugfix; it should be as small as reasonable. If you want the code to be moved around, that should be left to a later patch.
Thanks, Joseph
if (status < 0) { mlog_errno(status);
return status;
}goto out;
fe = (struct ocfs2_dinode *) bh->b_data; @@ -76,9 +76,10 @@ static int ocfs2_fast_symlink_read_folio(struct file *f, struct folio *folio) memcpy(kaddr, link, len + 1); kunmap_atomic(kaddr); SetPageUptodate(page); +out: unlock_page(page); brelse(bh);
- return 0;
- return status;
} const struct address_space_operations ocfs2_fast_symlink_aops = {
On 2024/12/14 23:20, Matthew Wilcox wrote:
On Sat, Dec 14, 2024 at 08:03:30PM +0800, Joseph Qi wrote:
On 2024/12/6 01:16, Matthew Wilcox (Oracle) wrote:
If we can't read the buffer, be sure to unlock the page before returning.
Signed-off-by: Matthew Wilcox (Oracle) willy@infradead.org Cc: stable@vger.kernel.org
fs/ocfs2/symlink.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/ocfs2/symlink.c b/fs/ocfs2/symlink.c index d4c5fdcfa1e4..f5cf2255dc09 100644 --- a/fs/ocfs2/symlink.c +++ b/fs/ocfs2/symlink.c @@ -65,7 +65,7 @@ static int ocfs2_fast_symlink_read_folio(struct file *f, struct folio *folio)
Better to move calling ocfs2_read_inode_block() here.
Hm? This is a bugfix; it should be as small as reasonable. If you want the code to be moved around, that should be left to a later patch.
Well, either way is fine to me. Reviewed-by: Joseph Qi joseph.qi@linux.alibaba.com
linux-stable-mirror@lists.linaro.org