From: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
To: gregkh@linuxfoundation.org
Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org,
"Jiri Slaby (SUSE)" <jirislaby@kernel.org>
Subject: [PATCH 05/45] tty: vt: pass proper pointers from tioclinux()
Date: Thu, 18 Jan 2024 08:57:16 +0100 [thread overview]
Message-ID: <20240118075756.10541-6-jirislaby@kernel.org> (raw)
In-Reply-To: <20240118075756.10541-1-jirislaby@kernel.org>
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>
---
drivers/tty/vt/selection.c | 8 ++++----
drivers/tty/vt/vt.c | 19 ++++++++++---------
include/linux/selection.h | 2 +-
3 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/drivers/tty/vt/selection.c b/drivers/tty/vt/selection.c
index 8967c3a0d916..e172ede235a0 100644
--- a/drivers/tty/vt/selection.c
+++ b/drivers/tty/vt/selection.c
@@ -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;
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index e131edea00da..079dbff562fd 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -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;
diff --git a/include/linux/selection.h b/include/linux/selection.h
index 170ef28ff26b..b7cd23e56a2b 100644
--- a/include/linux/selection.h
+++ b/include/linux/selection.h
@@ -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);
--
2.43.0
next prev parent reply other threads:[~2024-01-18 7:58 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-18 7:57 [PATCH 00/45] tty: vt: cleanup and documentation Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 01/45] vgacon: inline vc_scrolldelta_helper() into vgacon_scrolldelta() Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 02/45] fbcon: make display_desc a static array in fbcon_startup() Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 03/45] tty: vt: fix 20 vs 0x20 typo in EScsiignore Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 04/45] tty: vt: expect valid vc when in tty ops Jiri Slaby (SUSE)
2024-01-18 7:57 ` Jiri Slaby (SUSE) [this message]
2024-01-18 7:57 ` [PATCH 06/45] tty: vt: push console lock from tioclinux() down to 2 functions Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 07/45] tty: vt: pass vc_resize_user as a parameter Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 08/45] tty: vt: make vc_is_sel()'s vc const Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 09/45] tty: vt: define an enum for CSI+m codes Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 10/45] tty: vt: use case ranges for CSI+m fg/bg colors Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 11/45] tty: vt: define an enum for CSI+J codes Jiri Slaby (SUSE)
2024-01-19 6:30 ` Jiri Slaby
2024-01-18 7:57 ` [PATCH 12/45] tty: vt: reflow csi_J() Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 13/45] tty: vt: define an enum for CSI+K codes Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 14/45] tty: vt: reflow csi_K() Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 15/45] tty: vt: pass vpar as unsigned to csi_J() and csi_K() Jiri Slaby (SUSE)
2024-01-19 6:29 ` Jiri Slaby
2024-01-18 7:57 ` [PATCH 16/45] tty: vt: define an enum for ascii characters Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 17/45] tty: vt: remove extern from functions in selection.h Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 18/45] tty: vt: make consw::con_debug_*() return void Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 19/45] tty: vt: make init parameter of consw::con_init() a bool Jiri Slaby (SUSE)
2024-01-18 8:56 ` Geert Uytterhoeven
2024-01-18 7:57 ` [PATCH 20/45] tty: vt: sanitize arguments of consw::con_clear() Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 21/45] tty: vt: remove checks for count in consw::con_clear() implementations Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 22/45] tty: vt: add con_putc() helper Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 23/45] tty: vt: eliminate unneeded consw::con_putc() implementations Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 24/45] tty: vt: sanitize consw::con_putc() parameters Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 25/45] tty: vt: sanitize consw::con_putcs() parameters Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 26/45] consoles: use if instead of switch-case in consw::con_cursor() Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 27/45] fbdev/core: simplify cursor_state setting in fbcon_ops::cursor() Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 28/45] tty: vt: remove CM_* constants Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 29/45] tty: vt: make consw::con_switch() return a bool Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 30/45] tty: vt: stop using -1 for blank mode in consw::con_blank() Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 31/45] tty: vt: use VESA blanking constants Jiri Slaby (SUSE)
2024-01-18 8:30 ` Thomas Zimmermann
2024-01-18 8:32 ` Jiri Slaby
2024-01-18 8:41 ` Thomas Zimmermann
2024-01-18 8:52 ` Jiri Slaby
2024-01-18 8:54 ` Greg KH
2024-01-18 7:57 ` [PATCH 32/45] tty: vt: use enum for VESA blanking modes Jiri Slaby (SUSE)
2024-01-18 8:38 ` Thomas Zimmermann
2024-01-18 7:57 ` [PATCH 33/45] tty: vt: make types around consw::con_blank() bool Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 34/45] tty: vt: make font of consw::con_font_set() const Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 35/45] tty: vt: make consw::con_font_default()'s name const Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 36/45] tty: vt: change consw::con_set_origin() return type Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 37/45] fbcon: remove consw::con_screen_pos() Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 38/45] tty: vt: " Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 39/45] tty: vt: make types of screenpos() more consistent Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 40/45] fbcon: remove fbcon_getxy() Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 41/45] tty: vt: remove consw::con_getxy() Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 42/45] tty: vt: remove unused consw::con_flush_scrollback() Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 43/45] tty: vt: document the rest of struct consw Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 44/45] tty: vt: fix up kernel-doc Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 45/45] Documentation: add console.rst Jiri Slaby (SUSE)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240118075756.10541-6-jirislaby@kernel.org \
--to=jirislaby@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox