Skip to content

Commit

Permalink
rocket: Prepare for BKL pushdown
Browse files Browse the repository at this point in the history
Wrap the ioctl code in lock_kernel calls

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Alan Cox authored and Linus Torvalds committed Apr 30, 2008
1 parent eb17455 commit bdf183a
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions drivers/char/rocket.c
Original file line number Diff line number Diff line change
Expand Up @@ -1433,29 +1433,38 @@ static int rp_ioctl(struct tty_struct *tty, struct file *file,
{
struct r_port *info = (struct r_port *) tty->driver_data;
void __user *argp = (void __user *)arg;
int ret = 0;

if (cmd != RCKP_GET_PORTS && rocket_paranoia_check(info, "rp_ioctl"))
return -ENXIO;

lock_kernel();

switch (cmd) {
case RCKP_GET_STRUCT:
if (copy_to_user(argp, info, sizeof (struct r_port)))
return -EFAULT;
return 0;
ret = -EFAULT;
break;
case RCKP_GET_CONFIG:
return get_config(info, argp);
ret = get_config(info, argp);
break;
case RCKP_SET_CONFIG:
return set_config(info, argp);
ret = set_config(info, argp);
break;
case RCKP_GET_PORTS:
return get_ports(info, argp);
ret = get_ports(info, argp);
break;
case RCKP_RESET_RM2:
return reset_rm2(info, argp);
ret = reset_rm2(info, argp);
break;
case RCKP_GET_VERSION:
return get_version(info, argp);
ret = get_version(info, argp);
break;
default:
return -ENOIOCTLCMD;
ret = -ENOIOCTLCMD;
}
return 0;
unlock_kernel();
return ret;
}

static void rp_send_xchar(struct tty_struct *tty, char ch)
Expand Down

0 comments on commit bdf183a

Please sign in to comment.