--- 1/drivers/char/vt_ioctl.c 2003-11-02 01:34:04.884866192 +0200 +++ 2/drivers/char/vt_ioctl.c 2003-11-02 01:44:39.906328256 +0200 @@ -332,10 +332,13 @@ } static inline int -do_unimap_ioctl(int cmd, struct unimapdesc *user_ud,int perm) +_do_unimap_ioctl(int cmd, int con, struct unimapdesc *user_ud,int perm) { struct unimapdesc tmp; - int i = 0; + int i = 0; + + if (!vc_cons_allocated(con)) /* impossible? */ + return -ENOIOCTLCMD; if (copy_from_user(&tmp, user_ud, sizeof tmp)) return -EFAULT; @@ -348,13 +351,19 @@ case PIO_UNIMAP: if (!perm) return -EPERM; - return con_set_unimap(fg_console, tmp.entry_ct, tmp.entries); + return con_set_unimap(con, tmp.entry_ct, tmp.entries); case GIO_UNIMAP: - return con_get_unimap(fg_console, tmp.entry_ct, &(user_ud->entry_ct), tmp.entries); + return con_get_unimap(con, tmp.entry_ct, &(user_ud->entry_ct), tmp.entries); } return 0; } +static inline int +do_unimap_ioctl(int cmd, struct unimapdesc *user_ud,int perm) +{ + return _do_unimap_ioctl(cmd, fg_console, user_ud, perm); +} + /* * We handle the console-specific ioctl's here. We allow the * capability to modify any console, not just the fg_console. @@ -972,7 +981,7 @@ case PIO_UNIMAP: case GIO_UNIMAP: - return do_unimap_ioctl(cmd, (struct unimapdesc *)arg, perm); + return _do_unimap_ioctl(cmd, console, (struct unimapdesc *)arg, perm); case VT_LOCKSWITCH: if (!capable(CAP_SYS_TTY_CONFIG))