null_subr.c (229428) | null_subr.c (229431) |
---|---|
1/*- 2 * Copyright (c) 1992, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software donated to Berkeley by 6 * Jan-Simon Pendry. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 17 unchanged lines hidden (view full) --- 26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * 32 * @(#)null_subr.c 8.7 (Berkeley) 5/14/95 33 * | 1/*- 2 * Copyright (c) 1992, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software donated to Berkeley by 6 * Jan-Simon Pendry. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 17 unchanged lines hidden (view full) --- 26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * 32 * @(#)null_subr.c 8.7 (Berkeley) 5/14/95 33 * |
34 * $FreeBSD: head/sys/fs/nullfs/null_subr.c 229428 2012-01-03 21:03:20Z kib $ | 34 * $FreeBSD: head/sys/fs/nullfs/null_subr.c 229431 2012-01-03 21:09:07Z kib $ |
35 */ 36 37#include <sys/param.h> 38#include <sys/systm.h> 39#include <sys/kernel.h> 40#include <sys/lock.h> 41#include <sys/mutex.h> 42#include <sys/malloc.h> --- 123 unchanged lines hidden (view full) --- 166 LIST_INSERT_HEAD(hd, xp, null_hash); 167 mtx_unlock(&null_hashmtx); 168 return (NULLVP); 169} 170 171static void 172null_insmntque_dtr(struct vnode *vp, void *xp) 173{ | 35 */ 36 37#include <sys/param.h> 38#include <sys/systm.h> 39#include <sys/kernel.h> 40#include <sys/lock.h> 41#include <sys/mutex.h> 42#include <sys/malloc.h> --- 123 unchanged lines hidden (view full) --- 166 LIST_INSERT_HEAD(hd, xp, null_hash); 167 mtx_unlock(&null_hashmtx); 168 return (NULLVP); 169} 170 171static void 172null_insmntque_dtr(struct vnode *vp, void *xp) 173{ |
174 175 vput(((struct null_node *)xp)->null_lowervp); |
|
174 vp->v_data = NULL; 175 vp->v_vnlock = &vp->v_lock; 176 free(xp, M_NULLFSNODE); 177 vp->v_op = &dead_vnodeops; 178 (void) vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); 179 vgone(vp); 180 vput(vp); 181} --- 39 unchanged lines hidden (view full) --- 221 * might cause a bogus v_data pointer to get dereferenced 222 * elsewhere if MALLOC should block. 223 */ 224 xp = malloc(sizeof(struct null_node), 225 M_NULLFSNODE, M_WAITOK); 226 227 error = getnewvnode("null", mp, &null_vnodeops, &vp); 228 if (error) { | 176 vp->v_data = NULL; 177 vp->v_vnlock = &vp->v_lock; 178 free(xp, M_NULLFSNODE); 179 vp->v_op = &dead_vnodeops; 180 (void) vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); 181 vgone(vp); 182 vput(vp); 183} --- 39 unchanged lines hidden (view full) --- 223 * might cause a bogus v_data pointer to get dereferenced 224 * elsewhere if MALLOC should block. 225 */ 226 xp = malloc(sizeof(struct null_node), 227 M_NULLFSNODE, M_WAITOK); 228 229 error = getnewvnode("null", mp, &null_vnodeops, &vp); 230 if (error) { |
231 vput(lowervp); |
|
229 free(xp, M_NULLFSNODE); 230 return (error); 231 } 232 233 xp->null_vnode = vp; 234 xp->null_lowervp = lowervp; 235 vp->v_type = lowervp->v_type; 236 vp->v_data = xp; --- 74 unchanged lines hidden --- | 232 free(xp, M_NULLFSNODE); 233 return (error); 234 } 235 236 xp->null_vnode = vp; 237 xp->null_lowervp = lowervp; 238 vp->v_type = lowervp->v_type; 239 vp->v_data = xp; --- 74 unchanged lines hidden --- |