Fix error return codes for ioctls on init/lock state devices.
In revision 223722 we introduced support for driver ioctls on init/lock state devices. Unfortunately the call to ttydevsw_cioctl() clobbers the value of the error variable, meaning that in many cases ioctl() will now return ENOTTY, even though the ioctl() was processed properly. Reported by: Boris Samorodov <bsam ipt ru> Patch by: jilles@ Approved by: re@ (kib@)
This commit is contained in:
parent
7a2aafc355
commit
ca0856d3d1
@ -766,7 +766,7 @@ ttyil_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag,
|
||||
struct thread *td)
|
||||
{
|
||||
struct tty *tp = dev->si_drv1;
|
||||
int error = 0;
|
||||
int error;
|
||||
|
||||
tty_lock(tp);
|
||||
if (tty_gone(tp)) {
|
||||
@ -777,6 +777,7 @@ ttyil_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag,
|
||||
error = ttydevsw_cioctl(tp, dev2unit(dev), cmd, data, td);
|
||||
if (error != ENOIOCTL)
|
||||
goto done;
|
||||
error = 0;
|
||||
|
||||
switch (cmd) {
|
||||
case TIOCGETA:
|
||||
|
Loading…
Reference in New Issue
Block a user