kernel -- ffs: Do not dereference NULL inodes in ffs_sync_scan1.
authorVenkatesh Srinivas <me@endeavour.zapto.org>
Fri, 30 Mar 2012 06:33:08 +0000 (23:33 -0700)
committerVenkatesh Srinivas <me@endeavour.zapto.org>
Fri, 30 Mar 2012 06:33:08 +0000 (23:33 -0700)
ffs_sync_scan1 is a fast callback from vmntvnodescan; it is not called
with vnodes locked. It is possible for an ffs_reclaim to have reclaimed
the vnode in question, NULL-ing out ip, without having removed the vnode
from the per-mount list. If we see a NULL inode, return failure from the
fast callback.

sys/vfs/ufs/ffs_vfsops.c

index ecd49b5..b004177 100644 (file)
@@ -1031,7 +1031,7 @@ ffs_sync_scan1(struct mount *mp, struct vnode *vp, void *data)
        /* Restart out whole search if this guy is locked
         * or is being reclaimed.
         */
-       if (vp->v_type == VNON || ((ip->i_flag &
+       if (vp->v_type == VNON || (ip == NULL) || ((ip->i_flag &
             (IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) == 0 &&
             RB_EMPTY(&vp->v_rbdirty_tree))) {
                return(-1);