Commit ab14caec authored by Al Viro's avatar Al Viro Committed by Linus Torvalds

[PATCH] m68k: amiserial __user annotations

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 2c7af511
...@@ -1089,7 +1089,7 @@ static void rs_unthrottle(struct tty_struct * tty) ...@@ -1089,7 +1089,7 @@ static void rs_unthrottle(struct tty_struct * tty)
*/ */
static int get_serial_info(struct async_struct * info, static int get_serial_info(struct async_struct * info,
struct serial_struct * retinfo) struct serial_struct __user * retinfo)
{ {
struct serial_struct tmp; struct serial_struct tmp;
struct serial_state *state = info->state; struct serial_state *state = info->state;
...@@ -1113,7 +1113,7 @@ static int get_serial_info(struct async_struct * info, ...@@ -1113,7 +1113,7 @@ static int get_serial_info(struct async_struct * info,
} }
static int set_serial_info(struct async_struct * info, static int set_serial_info(struct async_struct * info,
struct serial_struct * new_info) struct serial_struct __user * new_info)
{ {
struct serial_struct new_serial; struct serial_struct new_serial;
struct serial_state old_state, *state; struct serial_state old_state, *state;
...@@ -1194,7 +1194,7 @@ static int set_serial_info(struct async_struct * info, ...@@ -1194,7 +1194,7 @@ static int set_serial_info(struct async_struct * info,
* transmit holding register is empty. This functionality * transmit holding register is empty. This functionality
* allows an RS485 driver to be written in user space. * allows an RS485 driver to be written in user space.
*/ */
static int get_lsr_info(struct async_struct * info, unsigned int *value) static int get_lsr_info(struct async_struct * info, unsigned int __user *value)
{ {
unsigned char status; unsigned char status;
unsigned int result; unsigned int result;
...@@ -1285,6 +1285,7 @@ static int rs_ioctl(struct tty_struct *tty, struct file * file, ...@@ -1285,6 +1285,7 @@ static int rs_ioctl(struct tty_struct *tty, struct file * file,
struct async_struct * info = (struct async_struct *)tty->driver_data; struct async_struct * info = (struct async_struct *)tty->driver_data;
struct async_icount cprev, cnow; /* kernel counter temps */ struct async_icount cprev, cnow; /* kernel counter temps */
struct serial_icounter_struct icount; struct serial_icounter_struct icount;
void __user *argp = (void __user *)arg;
unsigned long flags; unsigned long flags;
if (serial_paranoia_check(info, tty->name, "rs_ioctl")) if (serial_paranoia_check(info, tty->name, "rs_ioctl"))
...@@ -1299,19 +1300,17 @@ static int rs_ioctl(struct tty_struct *tty, struct file * file, ...@@ -1299,19 +1300,17 @@ static int rs_ioctl(struct tty_struct *tty, struct file * file,
switch (cmd) { switch (cmd) {
case TIOCGSERIAL: case TIOCGSERIAL:
return get_serial_info(info, return get_serial_info(info, argp);
(struct serial_struct *) arg);
case TIOCSSERIAL: case TIOCSSERIAL:
return set_serial_info(info, return set_serial_info(info, argp);
(struct serial_struct *) arg);
case TIOCSERCONFIG: case TIOCSERCONFIG:
return 0; return 0;
case TIOCSERGETLSR: /* Get line status register */ case TIOCSERGETLSR: /* Get line status register */
return get_lsr_info(info, (unsigned int *) arg); return get_lsr_info(info, argp);
case TIOCSERGSTRUCT: case TIOCSERGSTRUCT:
if (copy_to_user((struct async_struct *) arg, if (copy_to_user(argp,
info, sizeof(struct async_struct))) info, sizeof(struct async_struct)))
return -EFAULT; return -EFAULT;
return 0; return 0;
...@@ -1370,7 +1369,7 @@ static int rs_ioctl(struct tty_struct *tty, struct file * file, ...@@ -1370,7 +1369,7 @@ static int rs_ioctl(struct tty_struct *tty, struct file * file,
icount.brk = cnow.brk; icount.brk = cnow.brk;
icount.buf_overrun = cnow.buf_overrun; icount.buf_overrun = cnow.buf_overrun;
if (copy_to_user((void *)arg, &icount, sizeof(icount))) if (copy_to_user(argp, &icount, sizeof(icount)))
return -EFAULT; return -EFAULT;
return 0; return 0;
case TIOCSERGWILD: case TIOCSERGWILD:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment