]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: send: return -ENAMETOOLONG when attempting a path that is too long
authorFilipe Manana <fdmanana@suse.com>
Wed, 5 Feb 2025 13:09:25 +0000 (13:09 +0000)
committerDavid Sterba <dsterba@suse.com>
Tue, 18 Mar 2025 19:35:45 +0000 (20:35 +0100)
When attempting to build a too long path we are currently returning
-ENOMEM, which is very odd and misleading. So update fs_path_ensure_buf()
to return -ENAMETOOLONG instead. Also, while at it, move the WARN_ON()
into the if statement's expression, as it makes it clear what is being
tested and also has the effect of adding 'unlikely' to the statement,
which allows the compiler to generate better code as this condition is
never expected to happen.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/send.c

index b9de1ab94367f22778c7730e0fcc49f2056fb85f..dcc1cf7d1dbdaf63f0931d015ffe5531f088c382 100644 (file)
@@ -484,10 +484,8 @@ static int fs_path_ensure_buf(struct fs_path *p, int len)
        if (p->buf_len >= len)
                return 0;
 
-       if (len > PATH_MAX) {
-               WARN_ON(1);
-               return -ENOMEM;
-       }
+       if (WARN_ON(len > PATH_MAX))
+               return -ENAMETOOLONG;
 
        path_len = fs_path_len(p);
        old_buf_len = p->buf_len;