-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Konstantin Belousov wrote:
> Author: kib
> Date: Thu Oct  1 12:50:26 2009
> New Revision: 197662
> URL: http://svn.freebsd.org/changeset/base/197662
> 
> Log:
>   Do not dereference vp->v_mount without holding vnode lock and checking
>   that the vnode is not reclaimed.
>   
>   Noted by:   Igor Sysoev <is rambler-co ru>
>   MFC after:  1 week

Thanks!

> Modified:
>   head/sys/kern/uipc_syscalls.c
> 
> Modified: head/sys/kern/uipc_syscalls.c
> ==============================================================================
> --- head/sys/kern/uipc_syscalls.c     Thu Oct  1 12:48:35 2009        
> (r197661)
> +++ head/sys/kern/uipc_syscalls.c     Thu Oct  1 12:50:26 2009        
> (r197662)
> @@ -2086,9 +2086,11 @@ retry_space:
>                               /*
>                                * Get the page from backing store.
>                                */
> -                             bsize = vp->v_mount->mnt_stat.f_iosize;
>                               vfslocked = VFS_LOCK_GIANT(vp->v_mount);
> -                             vn_lock(vp, LK_SHARED | LK_RETRY);
> +                             error = vn_lock(vp, LK_SHARED);
> +                             if (error != 0)
> +                                     goto after_read;
> +                             bsize = vp->v_mount->mnt_stat.f_iosize;
>  
>                               /*
>                                * XXXMAC: Because we don't have fp->f_cred
> @@ -2101,6 +2103,7 @@ retry_space:
>                                   IO_VMIO | ((MAXBSIZE / bsize) << 
> IO_SEQSHIFT),
>                                   td->td_ucred, NOCRED, &resid, td);
>                               VOP_UNLOCK(vp, 0);
> +                     after_read:
>                               VFS_UNLOCK_GIANT(vfslocked);
>                               VM_OBJECT_LOCK(obj);
>                               vm_page_io_finish(pg);
> 


- --
Xin LI <[email protected]>    http://www.delphij.net/
FreeBSD - The Power to Serve!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.12 (FreeBSD)

iEYEARECAAYFAkrFTIAACgkQi+vbBBjt66DwFgCgn1DSEwLvKdf05bwSWqe3cKwl
qZEAn28OF2G63pmKDzTB5mm2O9SaGuQB
=7Ae1
-----END PGP SIGNATURE-----
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to