Stop translating the ERESTART error from the open(2) into EINTR.
Posix requires that open(2) is restartable for SA_RESTART. For non-posix objects, in particular, devfs nodes, still disable automatic restart of the opens. The open call to a driver could have significant side effects for the hardware. Noted and reviewed by: jilles Discussed with: bde MFC after: 2 weeks
This commit is contained in:
parent
f710aaa725
commit
2ca4998342
sys
@ -1089,8 +1089,11 @@ devfs_open(struct vop_open_args *ap)
|
||||
|
||||
vn_lock(vp, vlocked | LK_RETRY);
|
||||
dev_relthread(dev, ref);
|
||||
if (error)
|
||||
if (error != 0) {
|
||||
if (error == ERESTART)
|
||||
error = EINTR;
|
||||
return (error);
|
||||
}
|
||||
|
||||
#if 0 /* /dev/console */
|
||||
KASSERT(fp != NULL, ("Could not vnode bypass device on NULL fp"));
|
||||
|
@ -1106,8 +1106,6 @@ kern_openat(struct thread *td, int fd, char *path, enum uio_seg pathseg,
|
||||
goto success;
|
||||
}
|
||||
|
||||
if (error == ERESTART)
|
||||
error = EINTR;
|
||||
goto bad;
|
||||
}
|
||||
td->td_dupfd = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user