Fix fdcheckstd to pass the file descriptor along through vn_open. When
opening a device, devfs_open needs the file descriptor to install its own fileops. Failing to pass the file descriptor causes the vnode to be returned with the regular vnops, which will cause a panic on the first read or write because devfs_specops is not meant to support those operations. This bug caused a panic after exec'ing any set[ug]id program with fds 0..2 closed (i.e., if any action had to be taken by fdcheckstd, we would panic if the exec'd program ever tried to use any of those descriptors). Reviewed by: phk Approved by: re (scottl)
This commit is contained in:
parent
758c41b8cc
commit
1ee6b74603
@ -1803,7 +1803,7 @@ fdcheckstd(struct thread *td)
|
||||
NDINIT(&nd, LOOKUP, FOLLOW | MPSAFE, UIO_SYSSPACE,
|
||||
"/dev/null", td);
|
||||
flags = FREAD | FWRITE;
|
||||
error = vn_open(&nd, &flags, 0, -1);
|
||||
error = vn_open(&nd, &flags, 0, fd);
|
||||
if (error != 0) {
|
||||
/*
|
||||
* Someone may have closed the entry in the
|
||||
|
Loading…
x
Reference in New Issue
Block a user