public inbox for linux-ext4@vger.kernel.org
 help / color / mirror / Atom feed
From: libaokun@huaweicloud.com
To: linux-ext4@vger.kernel.org
Cc: tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz,
	ritesh.list@gmail.com, ojaswin@linux.ibm.com,
	linux-kernel@vger.kernel.org, yi.zhang@huawei.com,
	yangerkun@huawei.com, libaokun@huaweicloud.com,
	Baokun Li <libaokun1@huawei.com>
Subject: [PATCH v2 09/25] ext4: add new ext4_ext_path_brelse() helper
Date: Thu, 22 Aug 2024 10:35:29 +0800	[thread overview]
Message-ID: <20240822023545.1994557-10-libaokun@huaweicloud.com> (raw)
In-Reply-To: <20240822023545.1994557-1-libaokun@huaweicloud.com>

From: Baokun Li <libaokun1@huawei.com>

Add ext4_ext_path_brelse() helper function to reduce duplicate code
and ensure that path->p_bh is set to NULL after it is released.

Signed-off-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Tested-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
---
 fs/ext4/extents.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index c4a4573440c1..5e760d1a0eff 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -106,6 +106,12 @@ static int ext4_ext_trunc_restart_fn(struct inode *inode, int *dropped)
 	return 0;
 }
 
+static inline void ext4_ext_path_brelse(struct ext4_ext_path *path)
+{
+	brelse(path->p_bh);
+	path->p_bh = NULL;
+}
+
 static void ext4_ext_drop_refs(struct ext4_ext_path *path)
 {
 	int depth, i;
@@ -113,10 +119,8 @@ static void ext4_ext_drop_refs(struct ext4_ext_path *path)
 	if (!path)
 		return;
 	depth = path->p_depth;
-	for (i = 0; i <= depth; i++, path++) {
-		brelse(path->p_bh);
-		path->p_bh = NULL;
-	}
+	for (i = 0; i <= depth; i++, path++)
+		ext4_ext_path_brelse(path);
 }
 
 void ext4_free_ext_path(struct ext4_ext_path *path)
@@ -635,8 +639,7 @@ int ext4_ext_precache(struct inode *inode)
 		 */
 		if ((i == depth) ||
 		    path[i].p_idx > EXT_LAST_INDEX(path[i].p_hdr)) {
-			brelse(path[i].p_bh);
-			path[i].p_bh = NULL;
+			ext4_ext_path_brelse(path + i);
 			i--;
 			continue;
 		}
@@ -1889,8 +1892,7 @@ static void ext4_ext_try_to_merge_up(handle_t *handle,
 		(path[1].p_ext - EXT_FIRST_EXTENT(path[1].p_hdr));
 	path[0].p_hdr->eh_max = cpu_to_le16(max_root);
 
-	brelse(path[1].p_bh);
-	path[1].p_bh = NULL;
+	ext4_ext_path_brelse(path + 1);
 	ext4_free_blocks(handle, inode, NULL, blk, 1,
 			 EXT4_FREE_BLOCKS_METADATA | EXT4_FREE_BLOCKS_FORGET);
 }
@@ -2959,8 +2961,7 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start,
 			err = ext4_ext_rm_leaf(handle, inode, path,
 					       &partial, start, end);
 			/* root level has p_bh == NULL, brelse() eats this */
-			brelse(path[i].p_bh);
-			path[i].p_bh = NULL;
+			ext4_ext_path_brelse(path + i);
 			i--;
 			continue;
 		}
@@ -3022,8 +3023,7 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start,
 				err = ext4_ext_rm_idx(handle, inode, path, i);
 			}
 			/* root level has p_bh == NULL, brelse() eats this */
-			brelse(path[i].p_bh);
-			path[i].p_bh = NULL;
+			ext4_ext_path_brelse(path + i);
 			i--;
 			ext_debug(inode, "return to level %d\n", i);
 		}
-- 
2.39.2


  parent reply	other threads:[~2024-08-22  2:40 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-22  2:35 [PATCH v2 00/25] ext4: some bugfixes and cleanups for ext4 extents path libaokun
2024-08-22  2:35 ` [PATCH v2 01/25] ext4: refactor ext4_ext_rm_idx() to index 'path' libaokun
2024-08-22  2:35 ` [PATCH v2 02/25] ext4: prevent partial update of the extents path libaokun
2024-08-22  2:35 ` [PATCH v2 03/25] ext4: fix slab-use-after-free in ext4_split_extent_at() libaokun
2024-08-22  2:35 ` [PATCH v2 04/25] ext4: avoid use-after-free in ext4_ext_show_leaf() libaokun
2024-08-22  2:35 ` [PATCH v2 05/25] ext4: update orig_path in ext4_find_extent() libaokun
2024-08-27 18:04   ` Jan Kara
2024-08-22  2:35 ` [PATCH v2 06/25] ext4: aovid use-after-free in ext4_ext_insert_extent() libaokun
2024-08-27 18:07   ` Jan Kara
2024-08-22  2:35 ` [PATCH v2 07/25] ext4: drop ppath from ext4_ext_replay_update_ex() to avoid double-free libaokun
2024-08-22  2:35 ` [PATCH v2 08/25] ext4: fix double brelse() the buffer of the extents path libaokun
2024-08-22  2:35 ` libaokun [this message]
2024-08-22  2:35 ` [PATCH v2 10/25] ext4: propagate errors from ext4_find_extent() in ext4_insert_range() libaokun
2024-08-22  2:35 ` [PATCH v2 11/25] ext4: get rid of ppath in ext4_find_extent() libaokun
2024-08-22  2:35 ` [PATCH v2 12/25] ext4: get rid of ppath in get_ext_path() libaokun
2024-08-22  2:35 ` [PATCH v2 13/25] ext4: get rid of ppath in ext4_ext_create_new_leaf() libaokun
2024-08-22  2:35 ` [PATCH v2 14/25] ext4: get rid of ppath in ext4_ext_insert_extent() libaokun
2024-08-22  2:35 ` [PATCH v2 15/25] ext4: get rid of ppath in ext4_split_extent_at() libaokun
2024-08-22  2:35 ` [PATCH v2 16/25] ext4: get rid of ppath in ext4_force_split_extent_at() libaokun
2024-08-22  2:35 ` [PATCH v2 17/25] ext4: get rid of ppath in ext4_split_extent() libaokun
2024-08-22  2:35 ` [PATCH v2 18/25] ext4: get rid of ppath in ext4_split_convert_extents() libaokun
2024-08-22  2:35 ` [PATCH v2 19/25] ext4: get rid of ppath in ext4_convert_unwritten_extents_endio() libaokun
2024-08-22  2:35 ` [PATCH v2 20/25] ext4: get rid of ppath in ext4_ext_convert_to_initialized() libaokun
2024-08-22  2:35 ` [PATCH v2 21/25] ext4: get rid of ppath in ext4_ext_handle_unwritten_extents() libaokun
2024-08-22  2:35 ` [PATCH v2 22/25] ext4: get rid of ppath in convert_initialized_extent() libaokun
2024-08-22  2:35 ` [PATCH v2 23/25] ext4: refactor ext4_swap_extents() to reuse extents path libaokun
2024-08-22  2:35 ` [PATCH v2 24/25] ext4: make some fast commit functions " libaokun
2024-08-22  2:35 ` [PATCH v2 25/25] ext4: save unnecessary indentation in ext4_ext_create_new_leaf() libaokun
2024-08-27 17:16   ` Jan Kara
2024-09-05 14:53 ` [PATCH v2 00/25] ext4: some bugfixes and cleanups for ext4 extents path Theodore Ts'o

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=20240822023545.1994557-10-libaokun@huaweicloud.com \
    --to=libaokun@huaweicloud.com \
    --cc=adilger.kernel@dilger.ca \
    --cc=jack@suse.cz \
    --cc=libaokun1@huawei.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ojaswin@linux.ibm.com \
    --cc=ritesh.list@gmail.com \
    --cc=tytso@mit.edu \
    --cc=yangerkun@huawei.com \
    --cc=yi.zhang@huawei.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox