aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2021-05-11 00:18:00 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2021-05-22 18:33:16 +0000
commit8b59c6af27d188f6f32800a34b872c9415533895 (patch)
tree4d12764766e99567f7b61f2a42d1ed988a4ed13a
parenta9d418fbb843927fe193d19616ddef48c50ae206 (diff)
downloadsrc-8b59c6af27d188f6f32800a34b872c9415533895.tar.gz
src-8b59c6af27d188f6f32800a34b872c9415533895.zip
vfs: Fix error handling in vn_fullpath_hardlink()
vn_fullpath_any_smr() will return a positive error number if the caller-supplied buffer isn't big enough. In this case the error must be propagated up, otherwise we may copy out uninitialized bytes. Reported by: syzkaller+KMSAN Reviewed by: mjg, kib MFC aftr: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D30198 (cherry picked from commit c8bbb1272c8bc103cfaa42c7a1639f42b62483dd)
-rw-r--r--sys/kern/vfs_cache.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
index 2def9900096f..5b978511db17 100644
--- a/sys/kern/vfs_cache.c
+++ b/sys/kern/vfs_cache.c
@@ -3646,9 +3646,9 @@ vn_fullpath_hardlink(struct nameidata *ndp, char **retbuf, char **freebuf,
error = vn_fullpath_dir(vp, pwd->pwd_rdir, buf, retbuf, buflen,
addend);
pwd_drop(pwd);
- if (error != 0)
- goto out_bad;
}
+ if (error != 0)
+ goto out_bad;
*freebuf = buf;