diff options
author | delphij <delphij@FreeBSD.org> | 2005-12-13 15:32:52 +0000 |
---|---|---|
committer | delphij <delphij@FreeBSD.org> | 2005-12-13 15:32:52 +0000 |
commit | 53041c5448209c163cc4a5fa4172163b787b80c9 (patch) | |
tree | a96d7021f8b659000768c3957226b04544e00ad1 /sys/compat/linux/linux_ioctl.c | |
parent | 76cd6764a47666f310f54363214c051d6bcc6672 (diff) | |
download | FreeBSD-src-53041c5448209c163cc4a5fa4172163b787b80c9.zip FreeBSD-src-53041c5448209c163cc4a5fa4172163b787b80c9.tar.gz |
In Linux, kernel parameters passed to ioctl are by value, while in FreeBSD
they are passed by reference. Handle the difference within the
linux_ioctl_termio on the LINUX_TCFLSH path.
Submitted by: Jaroslav Drzik <jaro_AT_coop-voz_dot_sk>
Diffstat (limited to 'sys/compat/linux/linux_ioctl.c')
-rw-r--r-- | sys/compat/linux/linux_ioctl.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/compat/linux/linux_ioctl.c b/sys/compat/linux/linux_ioctl.c index 1a59f4b..44b5fa5 100644 --- a/sys/compat/linux/linux_ioctl.c +++ b/sys/compat/linux/linux_ioctl.c @@ -806,22 +806,22 @@ linux_ioctl_termio(struct thread *td, struct linux_ioctl_args *args) } case LINUX_TCFLSH: { - args->cmd = TIOCFLUSH; + int val; switch (args->arg) { case LINUX_TCIFLUSH: - args->arg = FREAD; + val = FREAD; break; case LINUX_TCOFLUSH: - args->arg = FWRITE; + val = FWRITE; break; case LINUX_TCIOFLUSH: - args->arg = FREAD | FWRITE; + val = FREAD | FWRITE; break; default: fdrop(fp, td); return (EINVAL); } - error = (ioctl(td, (struct ioctl_args *)args)); + error = (fo_ioctl(fp,TIOCFLUSH,(caddr_t)&val,td->td_ucred,td)); break; } |