git: 11403bdeb415 - main - vfs: fix rangelock range in vn_rdwr() for IO_APPEND
Chuck Silvers
chs at FreeBSD.org
Thu Jan 7 21:42:18 UTC 2021
The branch main has been updated by chs:
URL: https://cgit.FreeBSD.org/src/commit/?id=11403bdeb4158531af36bc7c51cbbba27deb69b1
commit 11403bdeb4158531af36bc7c51cbbba27deb69b1
Author: Chuck Silvers <chs at FreeBSD.org>
AuthorDate: 2021-01-06 20:04:25 +0000
Commit: Chuck Silvers <chs at FreeBSD.org>
CommitDate: 2021-01-07 21:37:35 +0000
vfs: fix rangelock range in vn_rdwr() for IO_APPEND
vn_rdwr() must lock the entire file range for IO_APPEND
just like vn_io_fault() does for O_APPEND.
Reviewed by: kib, imp, mckusick
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D28008
---
sys/kern/vfs_vnops.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index f69115047eba..2ca2cf124c23 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -584,6 +584,8 @@ vn_rdwr(enum uio_rw rw, struct vnode *vp, void *base, int len, off_t offset,
if (rw == UIO_READ) {
rl_cookie = vn_rangelock_rlock(vp, offset,
offset + len);
+ } else if ((ioflg & IO_APPEND) != 0) {
+ rl_cookie = vn_rangelock_wlock(vp, 0, OFF_MAX);
} else {
rl_cookie = vn_rangelock_wlock(vp, offset,
offset + len);
More information about the dev-commits-src-main
mailing list