mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
change semantics of ldisc ->compat_ioctl()
First of all, make it return int. Returning long when native method had never allowed that is ridiculous and inconvenient. More importantly, change the caller; if ldisc ->compat_ioctl() is NULL or returns -ENOIOCTLCMD, tty_compat_ioctl() will try to feed cmd and compat_ptr(arg) to ldisc's native ->ioctl(). That simplifies ->compat_ioctl() instances quite a bit - they only need to deal with ioctls that are neither generic tty ones (those would get shunted off to tty_ioctl()) nor simple compat pointer ones. Note that something like TCFLSH won't reach ->compat_ioctl(), even if ldisc ->ioctl() does handle it - it will be recognized earlier and passed to tty_ioctl() (and ultimately - ldisc ->ioctl()). For many ldiscs it means that NULL ->compat_ioctl() does the right thing. Those where it won't serve (see e.g. n_r3964.c) are also easily dealt with - we need to handle the numeric-argument ioctls (calling the native instance) and, if such would exist, the ioctls that need layout conversion, etc. All in-tree ldiscs dealt with. Signed-off-by: Al Viro <[email protected]>
This commit is contained in:
parent
7ee3296551
commit
f0193d3ea7
11 changed files with 36 additions and 100 deletions
|
|
@ -465,6 +465,7 @@ static struct tty_ldisc_ops nci_uart_ldisc = {
|
|||
.receive_buf = nci_uart_tty_receive,
|
||||
.write_wakeup = nci_uart_tty_wakeup,
|
||||
.ioctl = nci_uart_tty_ioctl,
|
||||
.compat_ioctl = nci_uart_tty_ioctl,
|
||||
};
|
||||
|
||||
static int __init nci_uart_init(void)
|
||||
|
|
|
|||
Loading…
Reference in a new issue