mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 11:25:21 +01:00
FreeBSD: Fix a potential null dereference in zfs_freebsd_fsync()
In general it's possible for a vnode to not have an associated VM
object. This happens in particular with named pipes, which have
some distinct VOPs, defined in zfs_fifoops. Thus, this chunk of
zfs_freebsd_fsync() needs to check for the FIFO case, like other
vm_object_mightbedirty() callers do.
(Note that vn_flush_cached_data() calls are predicated on
zn_has_cached_data() returning true, and it checks for a NULL v_object
pointer already.)
Fixes: ef4058fcdc
Reported-by: Collin Funk <[email protected]>
Reviewed-by: Sean Eric Fagan <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Alexander Motin <[email protected]>
Signed-off-by: Mark Johnston <[email protected]>
Closes #18015
This commit is contained in:
1 parent
89f729dcca
commit
86b064469d
1 file changed
+1
-1
@@ -5277,7 +5277,7 @@ zfs_freebsd_fsync(struct vop_fsync_args *ap)
|
||||
* Push any dirty mmap()'d data out to the DMU and ZIL, ready for
|
||||
* zil_commit() to be called in zfs_fsync().
|
||||
*/
|
||||
if (vm_object_mightbedirty(vp->v_object)) {
|
||||
if (vp->v_object != NULL && vm_object_mightbedirty(vp->v_object)) {
|
||||
zfs_vmobject_wlock(vp->v_object);
|
||||
if (!vm_object_page_clean(vp->v_object, 0, 0, 0))
|
||||
err = SET_ERROR(EIO);
|
||||
|
||||
Reference in new issue
Block a user