svn commit: r268608 - head/sys/fs/tmpfs
Konstantin Belousov
kib at FreeBSD.org
Mon Jul 14 08:45:30 UTC 2014
Author: kib
Date: Mon Jul 14 08:45:29 2014
New Revision: 268608
URL: http://svnweb.freebsd.org/changeset/base/268608
Log:
The tmpfs_link() must not dereference the filesystem-specific data for
a vnode until it is verified that the vnode indeed belongs to tmpfs
mount. Otherwise, it might access random memory, at least in the
debug kernel.
Reported and tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Modified:
head/sys/fs/tmpfs/tmpfs_vnops.c
Modified: head/sys/fs/tmpfs/tmpfs_vnops.c
==============================================================================
--- head/sys/fs/tmpfs/tmpfs_vnops.c Mon Jul 14 08:41:13 2014 (r268607)
+++ head/sys/fs/tmpfs/tmpfs_vnops.c Mon Jul 14 08:45:29 2014 (r268608)
@@ -570,8 +570,6 @@ tmpfs_link(struct vop_link_args *v)
MPASS(cnp->cn_flags & HASBUF);
MPASS(dvp != vp); /* XXX When can this be false? */
- node = VP_TO_TMPFS_NODE(vp);
-
/* XXX: Why aren't the following two tests done by the caller? */
/* Hard links of directories are forbidden. */
@@ -586,6 +584,8 @@ tmpfs_link(struct vop_link_args *v)
goto out;
}
+ node = VP_TO_TMPFS_NODE(vp);
+
/* Ensure that we do not overflow the maximum number of links imposed
* by the system. */
MPASS(node->tn_links <= LINK_MAX);
More information about the svn-src-all
mailing list