summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2025-02-05 13:09:25 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-06-04 14:40:05 +0200
commit822c0e09f401a4d716e0a2af2b0ea185788d2834 (patch)
tree2d11791915ed16eacc086fb19acac8190ec5fe65 /fs
parent22bb11b3d53403518d728ca10086acfe3ab84a3b (diff)
downloadlinux-822c0e09f401a4d716e0a2af2b0ea185788d2834.tar.gz
linux-822c0e09f401a4d716e0a2af2b0ea185788d2834.tar.bz2
linux-822c0e09f401a4d716e0a2af2b0ea185788d2834.zip
btrfs: send: return -ENAMETOOLONG when attempting a path that is too long
[ Upstream commit a77749b3e21813566cea050bbb3414ae74562eba ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/send.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
index a2b95ccb4cf5..0735decec99b 100644
--- a/fs/btrfs/send.c
+++ b/fs/btrfs/send.c
@@ -431,10 +431,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 = p->end - p->start;
old_buf_len = p->buf_len;