diff mbox series

[1/3] btrfs: improve readability in search_ioctl()

Message ID 20250309075820.30999-2-sunk67188@gmail.com (mailing list archive)
State New
Headers show
Series btrfs: random code cleanup | expand

Commit Message

Sun YangKai March 9, 2025, 7:57 a.m. UTC
This commit addresses two code issues in the search_ioctl() function:

1. Move the assignment of ret = -EFAULT to within the error condition
   check in fault_in_subpage_writeable(). The previous placement outside
   the condition could lead to the error value being overwritten by
   subsequent assignments, cause unnecessary assignments.

2. Simplify loop exit logic by removing redundant `goto`.
   The original code used `goto err` to bypass post-loop processing after
   handling errors from `btrfs_search_forward()`. However, the loop's
   termination naturally falls through to the post-loop section, which
   already handles `ret` values. Replacing `goto err` with `break`
   eliminates redundant control flow, consolidates error handling, and
   makes the loop's exit conditions explicit.

The changes ensure proper error propagation and make the loop's exit
conditions clearer while maintaining functional equivalence.

Signed-off-by: Sun YangKai <sunk67188@gmail.com>
---
 fs/btrfs/ioctl.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)
diff mbox series

Patch

diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 6c18bad53cd3..bef158a1260b 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -1642,21 +1642,20 @@  static noinline int search_ioctl(struct inode *inode,
 	key.offset = sk->min_offset;
 
 	while (1) {
-		ret = -EFAULT;
 		/*
 		 * Ensure that the whole user buffer is faulted in at sub-page
 		 * granularity, otherwise the loop may live-lock.
 		 */
 		if (fault_in_subpage_writeable(ubuf + sk_offset,
-					       *buf_size - sk_offset))
+					       *buf_size - sk_offset)) {
+			ret = -EFAULT;
 			break;
+		}
 
 		ret = btrfs_search_forward(root, &key, path, sk->min_transid);
-		if (ret != 0) {
-			if (ret > 0)
-				ret = 0;
-			goto err;
-		}
+		if (ret)
+			break;
+
 		ret = copy_to_sk(path, &key, sk, buf_size, ubuf,
 				 &sk_offset, &num_found);
 		btrfs_release_path(path);
@@ -1666,7 +1665,7 @@  static noinline int search_ioctl(struct inode *inode,
 	}
 	if (ret > 0)
 		ret = 0;
-err:
+
 	sk->nr_items = num_found;
 	btrfs_put_root(root);
 	btrfs_free_path(path);