static inline int
__uart_user_write(struct uart_port *port, struct circ_buf *circ,
- const unsigned char *buf, int count)
+ const unsigned char __user *buf, int count)
{
unsigned long flags;
int c, ret = 0;
return 0;
if (from_user)
- ret = __uart_user_write(state->port, &state->info->xmit, buf, count);
+ ret = __uart_user_write(state->port, &state->info->xmit,
+ (const unsigned char __user *)buf, count);
else
- ret = __uart_kern_write(state->port, &state->info->xmit, buf, count);
+ ret = __uart_kern_write(state->port, &state->info->xmit,
+ buf, count);
uart_start(tty);
return ret;
uart_set_mctrl(port, TIOCM_RTS);
}
-static int uart_get_info(struct uart_state *state, struct serial_struct *retinfo)
+static int uart_get_info(struct uart_state *state,
+ struct serial_struct __user *retinfo)
{
struct uart_port *port = state->port;
struct serial_struct tmp;
return 0;
}
-static int
-uart_set_info(struct uart_state *state, struct serial_struct *newinfo)
+static int uart_set_info(struct uart_state *state,
+ struct serial_struct __user *newinfo)
{
struct serial_struct new_serial;
struct uart_port *port = state->port;
* uart_get_lsr_info - get line status register info.
* Note: uart_ioctl protects us against hangups.
*/
-static int uart_get_lsr_info(struct uart_state *state, unsigned int *value)
+static int uart_get_lsr_info(struct uart_state *state,
+ unsigned int __user *value)
{
struct uart_port *port = state->port;
unsigned int result;
* NB: both 1->0 and 0->1 transitions are counted except for
* RI where only 0->1 is counted.
*/
-static int
-uart_get_count(struct uart_state *state, struct serial_icounter_struct *icnt)
+static int uart_get_count(struct uart_state *state,
+ struct serial_icounter_struct __user *icnt)
{
struct serial_icounter_struct icount;
struct uart_icount cnow;
unsigned long arg)
{
struct uart_state *state = tty->driver_data;
+ void __user *uarg = (void __user *)arg;
int ret = -ENOIOCTLCMD;
BUG_ON(!kernel_locked());
*/
switch (cmd) {
case TIOCGSERIAL:
- ret = uart_get_info(state, (struct serial_struct *)arg);
+ ret = uart_get_info(state, uarg);
break;
case TIOCSSERIAL:
- ret = uart_set_info(state, (struct serial_struct *)arg);
+ ret = uart_set_info(state, uarg);
break;
case TIOCSERCONFIG:
break;
case TIOCGICOUNT:
- ret = uart_get_count(state, (struct serial_icounter_struct *)arg);
+ ret = uart_get_count(state, uarg);
break;
}
*/
switch (cmd) {
case TIOCSERGETLSR: /* Get line status register */
- ret = uart_get_lsr_info(state, (unsigned int *)arg);
+ ret = uart_get_lsr_info(state, uarg);
break;
default: {