mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-08 14:13:53 +00:00
tty: vt: pass proper pointers from tioclinux()
Pass proper types and proper pointers (the data with an offset) to the TIOCL_* handlers. So that they need not to cast or add anything to the passed pointer. This makes obvious what is passed/consumed. Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org> Tested-by: Helge Deller <deller@gmx.de> # parisc STI console Link: https://lore.kernel.org/r/20240122110401.7289-6-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b3dd9bef75
commit
a0b8a16812
@ -7,7 +7,7 @@
|
||||
* 'int set_selection_kernel(struct tiocl_selection *, struct tty_struct *)'
|
||||
* 'void clear_selection(void)'
|
||||
* 'int paste_selection(struct tty_struct *)'
|
||||
* 'int sel_loadlut(char __user *)'
|
||||
* 'int sel_loadlut(u32 __user *)'
|
||||
*
|
||||
* Now that /dev/vcs exists, most of this can disappear again.
|
||||
*/
|
||||
@ -111,15 +111,15 @@ static inline int inword(const u32 c)
|
||||
|
||||
/**
|
||||
* sel_loadlut() - load the LUT table
|
||||
* @p: user table
|
||||
* @lut: user table
|
||||
*
|
||||
* Load the LUT table from user space. The caller must hold the console
|
||||
* lock. Make a temporary copy so a partial update doesn't make a mess.
|
||||
*/
|
||||
int sel_loadlut(char __user *p)
|
||||
int sel_loadlut(u32 __user *lut)
|
||||
{
|
||||
u32 tmplut[ARRAY_SIZE(inwordLut)];
|
||||
if (copy_from_user(tmplut, (u32 __user *)(p+4), sizeof(inwordLut)))
|
||||
if (copy_from_user(tmplut, lut, sizeof(inwordLut)))
|
||||
return -EFAULT;
|
||||
memcpy(inwordLut, tmplut, sizeof(inwordLut));
|
||||
return 0;
|
||||
|
@ -145,7 +145,7 @@ static void gotoxy(struct vc_data *vc, int new_x, int new_y);
|
||||
static void save_cur(struct vc_data *vc);
|
||||
static void reset_terminal(struct vc_data *vc, int do_clear);
|
||||
static void con_flush_chars(struct tty_struct *tty);
|
||||
static int set_vesa_blanking(char __user *p);
|
||||
static int set_vesa_blanking(u8 __user *mode);
|
||||
static void set_cursor(struct vc_data *vc);
|
||||
static void hide_cursor(struct vc_data *vc);
|
||||
static void console_callback(struct work_struct *ignored);
|
||||
@ -3134,6 +3134,8 @@ int tioclinux(struct tty_struct *tty, unsigned long arg)
|
||||
{
|
||||
char type, data;
|
||||
char __user *p = (char __user *)arg;
|
||||
void __user *param_aligned32 = (u32 __user *)arg + 1;
|
||||
void __user *param = (void __user *)arg + 1;
|
||||
int lines;
|
||||
int ret;
|
||||
|
||||
@ -3147,8 +3149,7 @@ int tioclinux(struct tty_struct *tty, unsigned long arg)
|
||||
case TIOCL_SETSEL:
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return -EPERM;
|
||||
return set_selection_user((struct tiocl_selection
|
||||
__user *)(p+1), tty);
|
||||
return set_selection_user(param, tty);
|
||||
case TIOCL_PASTESEL:
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return -EPERM;
|
||||
@ -3162,7 +3163,7 @@ int tioclinux(struct tty_struct *tty, unsigned long arg)
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return -EPERM;
|
||||
console_lock();
|
||||
ret = sel_loadlut(p);
|
||||
ret = sel_loadlut(param_aligned32);
|
||||
console_unlock();
|
||||
break;
|
||||
case TIOCL_GETSHIFTSTATE:
|
||||
@ -3181,7 +3182,7 @@ int tioclinux(struct tty_struct *tty, unsigned long arg)
|
||||
return put_user(data, p);
|
||||
case TIOCL_SETVESABLANK:
|
||||
console_lock();
|
||||
ret = set_vesa_blanking(p);
|
||||
ret = set_vesa_blanking(param);
|
||||
console_unlock();
|
||||
break;
|
||||
case TIOCL_GETKMSGREDIRECT:
|
||||
@ -3204,7 +3205,7 @@ int tioclinux(struct tty_struct *tty, unsigned long arg)
|
||||
*/
|
||||
return fg_console;
|
||||
case TIOCL_SCROLLCONSOLE:
|
||||
if (get_user(lines, (s32 __user *)(p+4)))
|
||||
if (get_user(lines, (s32 __user *)param_aligned32))
|
||||
return -EFAULT;
|
||||
|
||||
/*
|
||||
@ -4262,11 +4263,11 @@ postcore_initcall(vtconsole_class_init);
|
||||
* Screen blanking
|
||||
*/
|
||||
|
||||
static int set_vesa_blanking(char __user *p)
|
||||
static int set_vesa_blanking(u8 __user *mode_user)
|
||||
{
|
||||
unsigned int mode;
|
||||
u8 mode;
|
||||
|
||||
if (get_user(mode, p + 1))
|
||||
if (get_user(mode, mode_user))
|
||||
return -EFAULT;
|
||||
|
||||
vesa_blank_mode = (mode < 4) ? mode : 0;
|
||||
|
@ -20,7 +20,7 @@ extern int set_selection_user(const struct tiocl_selection __user *sel,
|
||||
extern int set_selection_kernel(struct tiocl_selection *v,
|
||||
struct tty_struct *tty);
|
||||
extern int paste_selection(struct tty_struct *tty);
|
||||
extern int sel_loadlut(char __user *p);
|
||||
extern int sel_loadlut(u32 __user *lut);
|
||||
extern int mouse_reporting(void);
|
||||
extern void mouse_report(struct tty_struct * tty, int butt, int mrx, int mry);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user