diff options
author | Mark Johnston <markj@FreeBSD.org> | 2021-05-11 00:18:00 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2021-05-22 18:33:16 +0000 |
commit | 8b59c6af27d188f6f32800a34b872c9415533895 (patch) | |
tree | 4d12764766e99567f7b61f2a42d1ed988a4ed13a | |
parent | a9d418fbb843927fe193d19616ddef48c50ae206 (diff) | |
download | src-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.c | 4 |
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; |