lkml.org 
[lkml]   [2011]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Subject[PATCH] Support compat_ioctl get/set termios_locked
From
Date
When running a Fedora 15 (x86) on an x86_64 kernel, in the boot process
plymouthd complains about those two missing ioctls:
[ 2.581783] ioctl32(plymouthd:186): Unknown cmd fd(10) cmd(00005457){t:'T';sz:0} arg(ffb6a5d0) on /dev/tty1
[ 2.581803] ioctl32(plymouthd:186): Unknown cmd fd(10) cmd(00005456){t:'T';sz:0} arg(ffb6a680) on /dev/tty1

both ioctl functions work on the 'struct termios', which has the same
size (36 bytes) on x86 and x86_64, so it's just a matter of converting the
pointer from userland.

Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
---
drivers/tty/n_tty.c | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
index 39d6ab6..24843da 100644
--- a/drivers/tty/n_tty.c
+++ b/drivers/tty/n_tty.c
@@ -40,6 +40,7 @@
#include <linux/tty.h>
#include <linux/timer.h>
#include <linux/ctype.h>
+#include <linux/compat.h>
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/slab.h>
@@ -2095,6 +2096,20 @@ static int n_tty_ioctl(struct tty_struct *tty, struct file *file,
}
}

+#ifdef CONFIG_COMPAT
+static long n_tty_compat_ioctl(struct tty_struct *tty, struct file *file,
+ unsigned int cmd, unsigned long arg)
+{
+ switch (cmd) {
+ case TIOCGLCKTRMIOS:
+ case TIOCSLCKTRMIOS:
+ return tty_mode_ioctl(tty, file, cmd, (unsigned long) compat_ptr(arg));
+ default:
+ return -ENOIOCTLCMD;
+ }
+}
+#endif
+
struct tty_ldisc_ops tty_ldisc_N_TTY = {
.magic = TTY_LDISC_MAGIC,
.name = "n_tty",
@@ -2105,6 +2120,9 @@ struct tty_ldisc_ops tty_ldisc_N_TTY = {
.read = n_tty_read,
.write = n_tty_write,
.ioctl = n_tty_ioctl,
+#ifdef CONFIG_COMPAT
+ .compat_ioctl = n_tty_compat_ioctl,
+#endif
.set_termios = n_tty_set_termios,
.poll = n_tty_poll,
.receive_buf = n_tty_receive_buf,
--
1.7.6.2



\
 
 \ /
  Last update: 2011-09-24 10:53    [W:0.043 / U:0.096 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site