Date: Mon, 26 Jun 95 12:12:53 MDT From: terry@cs.weber.edu (Terry Lambert) To: peter@haywire.DIALix.COM (Peter Wemm) Cc: current@freebsd.org Subject: Re: bug in Linux^H^H^H^H^HDoom Emulator Message-ID: <9506261812.AA28518@cs.weber.edu> In-Reply-To: <Pine.SV4.3.91.950626224220.12512A-100000@haywire.DIALix.COM> from "Peter Wemm" at Jun 26, 95 10:50:06 pm
next in thread | previous in thread | raw e-mail | index | archive | help
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv DO NOT COMMIT THIS WITHOUT FURTHER CHANGES! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > *** linux_misc.c.dist Mon Jun 26 01:32:37 1995 > --- linux_misc.c Mon Jun 26 22:38:41 1995 > *************** > *** 188,194 **** > printf("Linux-emul(%d): uselib(%s)\n", p->p_pid, path); > #endif > > ! NDINIT(&ni, LOOKUP, FOLLOW, UIO_SYSSPACE, path, p); > if (error = namei(&ni)) > return error; > > --- 188,194 ---- > printf("Linux-emul(%d): uselib(%s)\n", p->p_pid, path); > #endif > > ! NDINIT(&ni, LOOKUP, FOLLOW | LOCKLEAF, UIO_SYSSPACE, path, p); > if (error = namei(&ni)) > return error; > > *************** > *** 215,220 **** > --- 215,222 ---- > > if (error = VOP_OPEN(vnodep, FREAD, p->p_ucred, p)) > return error; > + > + VOP_UNLOCK(vnodep); /* lock no longer needed */ > > error = vm_mmap(kernel_map, (vm_offset_t *)&a_out, 1024, > VM_PROT_READ, VM_PROT_READ, 0, (caddr_t)vnodep, 0); At the *absolute* least: if (error = VOP_OPEN(vnodep, FREAD, p->p_ucred, p)) { VOP_UNLOCK(vnodep); /* lock no longer needed */ return error; } VOP_UNLOCK(vnodep); /* lock no longer needed */ Unfortunately, from context, I can't tell if there are other intervening error returns or not. If so, they need the same change! Terry Lambert terry@cs.weber.edu --- Any opinions in this posting are my own and not those of my present or previous employers.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9506261812.AA28518>