fs: btrfs: inode: Allow next_length() to return value > BTRFS_NAME_LEN
authorQu Wenruo <wqu@suse.com>
Wed, 24 Jun 2020 16:03:04 +0000 (18:03 +0200)
committerTom Rini <trini@konsulko.com>
Tue, 8 Sep 2020 00:57:27 +0000 (20:57 -0400)
All existing next_length() caller handles return value > BTRFS_NAME_LEN,
so there is no need to do BTRFS_NAME_LEN check in next_length().

But still, we want to exit early if we're beyond BTRFS_NAME_LEN, so this
patch makes next_length() exit as soon as we're beyond BTRFS_NAME_LEN.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Marek BehĂșn <marek.behun@nic.cz>
fs/btrfs/inode.c

index 007cf32..da2a5e9 100644 (file)
@@ -217,8 +217,12 @@ static u64 __get_parent_inode(struct __btrfs_root *root, u64 inr,
 static inline int next_length(const char *path)
 {
        int res = 0;
-       while (*path != '\0' && *path != '/' && res <= BTRFS_NAME_LEN)
-               ++res, ++path;
+       while (*path != '\0' && *path != '/') {
+               ++res;
+               ++path;
+               if (res > BTRFS_NAME_LEN)
+                       break;
+       }
        return res;
 }