| From b0af0d8c79922ac633d11ff9671f5f7f5e72477a Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 20 Oct 2023 01:32:15 +0200 |
| Subject: gfs2: Add metapath_dibh helper |
| |
| From: Andreas Gruenbacher <agruenba@redhat.com> |
| |
| [ Upstream commit 92099f0c92270c8c7a79e6bc6e0312ad248ea331 ] |
| |
| Add a metapath_dibh() helper for extracting the inode's buffer head from |
| a metapath. |
| |
| Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> |
| Stable-dep-of: faddeb848305 ("gfs2: Fix use-after-free in iomap inline data write path") |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/gfs2/bmap.c | 8 +++++++- |
| 1 file changed, 7 insertions(+), 1 deletion(-) |
| |
| diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c |
| index d2011c3c33fc2..7425c90e47eb5 100644 |
| --- a/fs/gfs2/bmap.c |
| +++ b/fs/gfs2/bmap.c |
| @@ -318,6 +318,12 @@ static void gfs2_metapath_ra(struct gfs2_glock *gl, __be64 *start, __be64 *end) |
| } |
| } |
| |
| +static inline struct buffer_head * |
| +metapath_dibh(struct metapath *mp) |
| +{ |
| + return mp->mp_bh[0]; |
| +} |
| + |
| static int __fillup_metapath(struct gfs2_inode *ip, struct metapath *mp, |
| unsigned int x, unsigned int h) |
| { |
| @@ -662,7 +668,7 @@ static int __gfs2_iomap_alloc(struct inode *inode, struct iomap *iomap, |
| { |
| struct gfs2_inode *ip = GFS2_I(inode); |
| struct gfs2_sbd *sdp = GFS2_SB(inode); |
| - struct buffer_head *dibh = mp->mp_bh[0]; |
| + struct buffer_head *dibh = metapath_dibh(mp); |
| u64 bn; |
| unsigned n, i, blks, alloced = 0, iblks = 0, branch_start = 0; |
| size_t dblks = iomap->length >> inode->i_blkbits; |
| -- |
| 2.51.0 |
| |