Date: Mon, 15 Oct 2001 21:43:55 +1000 (EST) From: Bruce Evans <bde@zeta.org.au> To: <current@freebsd.org> Cc: <stable@freebsd.org>, <dillon@freebsd.org>, <alfred@freebsd.org> Subject: coredump() broken for nfs filesystems Message-ID: <20011015211333.B576-100000@delplex.bde.org>
next in thread | raw e-mail | index | archive | help
coredump() now usually creates empty core files for nfs filesystems. This seems to be caused by the changes in rev.1.132 (-current) and rev.1.72.2.9 (RELENG_4), and braindamage in nfs_dolock(): Index: kern_sig.c =================================================================== RCS file: /home/ncvs/src/sys/kern/kern_sig.c,v retrieving revision 1.131 retrieving revision 1.132 diff -u -2 -r1.131 -r1.132 --- kern_sig.c 6 Sep 2001 22:20:41 -0000 1.131 +++ kern_sig.c 8 Sep 2001 20:02:32 -0000 1.132 > ... @@ -1896,6 +1898,17 @@ NDFREE(&nd, NDF_ONLY_PNBUF); vp = nd.ni_vp; + + VOP_UNLOCK(vp, 0, p); + lf.l_whence = SEEK_SET; + lf.l_start = 0; + lf.l_len = 0; + lf.l_type = F_WRLCK; + error = VOP_ADVLOCK(vp, (caddr_t)p, F_SETLK, &lf, F_FLOCK); + if (error) + goto out2; + This usually goes to out2 with error EOPNOTSUPP if the core file is on an nfs filesystem. From nfs_dolock(): % /* % * XXX Hack to temporarily allow this process (regardless of it's creds) % * to open the fifo we need to write to. vn_open() really should % * take a ucred (and once it does, this code should be fixed to use % * proc0's ucred. % */ % saved_uid = p->p_ucred->cr_uid; % p->p_ucred->cr_uid = 0; /* temporarly run the vn_open as root */ % % fmode = FFLAGS(O_WRONLY); % error = vn_open(&nd, &fmode, 0); This vn_open() usually fails, because root is usually mapped so has even less write permission than most users. I don't see how nfs write locks can work for syscalls either. % p->p_ucred->cr_uid = saved_uid; % if (error != 0) { % return (error == ENOENT ? EOPNOTSUPP : error); % } EOPNOTSUPP is a strange error for foot shooting. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011015211333.B576-100000>