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 25/45] tty: vt: sanitize consw::con_putcs() parameters
Date: Thu, 18 Jan 2024 08:57:36 +0100 [thread overview]
Message-ID: <20240118075756.10541-26-jirislaby@kernel.org> (raw)
In-Reply-To: <20240118075756.10541-1-jirislaby@kernel.org>
Similar to con_putc() in the previous patch:
* make the pointer to charattr a pointer to u16, and
* make x, y, and count unsigned as they are strictly non-negative.
And again, document that hook.
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
---
drivers/video/console/dummycon.c | 10 +++++-----
drivers/video/console/mdacon.c | 4 ++--
drivers/video/console/newport_con.c | 9 +++++----
drivers/video/console/sticon.c | 4 ++--
drivers/video/console/vgacon.c | 4 ++--
drivers/video/fbdev/core/fbcon.c | 4 ++--
include/linux/console.h | 6 ++++--
7 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/drivers/video/console/dummycon.c b/drivers/video/console/dummycon.c
index 1874beed0325..188d9f3e201c 100644
--- a/drivers/video/console/dummycon.c
+++ b/drivers/video/console/dummycon.c
@@ -59,10 +59,10 @@ static void dummycon_putc(struct vc_data *vc, u16 c, unsigned int y,
raw_notifier_call_chain(&dummycon_output_nh, 0, NULL);
}
-static void dummycon_putcs(struct vc_data *vc, const unsigned short *s,
- int count, int ypos, int xpos)
+static void dummycon_putcs(struct vc_data *vc, const u16 *s, unsigned int count,
+ unsigned int ypos, unsigned int xpos)
{
- int i;
+ unsigned int i;
if (!dummycon_putc_called) {
/* Ignore erases */
@@ -87,8 +87,8 @@ static int dummycon_blank(struct vc_data *vc, int blank, int mode_switch)
#else
static void dummycon_putc(struct vc_data *vc, u16 c, unsigned int y,
unsigned int x) { }
-static void dummycon_putcs(struct vc_data *vc, const unsigned short *s,
- int count, int ypos, int xpos) { }
+static void dummycon_putcs(struct vc_data *vc, const u16 *s, unsigned int count,
+ unsigned int ypos, unsigned int xpos) { }
static int dummycon_blank(struct vc_data *vc, int blank, int mode_switch)
{
return 0;
diff --git a/drivers/video/console/mdacon.c b/drivers/video/console/mdacon.c
index 01e779943c00..b8822b615b2f 100644
--- a/drivers/video/console/mdacon.c
+++ b/drivers/video/console/mdacon.c
@@ -427,8 +427,8 @@ static inline u16 *mda_addr(unsigned int x, unsigned int y)
return mda_vram_base + y * mda_num_columns + x;
}
-static void mdacon_putcs(struct vc_data *c, const unsigned short *s,
- int count, int y, int x)
+static void mdacon_putcs(struct vc_data *c, const u16 *s, unsigned int count,
+ unsigned int y, unsigned int x)
{
u16 *dest = mda_addr(x, y);
diff --git a/drivers/video/console/newport_con.c b/drivers/video/console/newport_con.c
index 9b5c0118873e..5e65ee0b7c07 100644
--- a/drivers/video/console/newport_con.c
+++ b/drivers/video/console/newport_con.c
@@ -396,12 +396,13 @@ static void newport_putc(struct vc_data *vc, u16 charattr, unsigned int ypos,
RENDER(npregs, p);
}
-static void newport_putcs(struct vc_data *vc, const unsigned short *s,
- int count, int ypos, int xpos)
+static void newport_putcs(struct vc_data *vc, const u16 *s,
+ unsigned int count, unsigned int ypos,
+ unsigned int xpos)
{
- int i;
- int charattr;
unsigned char *p;
+ unsigned int i;
+ u16 charattr;
charattr = (scr_readw(s) >> 8) & 0xff;
diff --git a/drivers/video/console/sticon.c b/drivers/video/console/sticon.c
index 2f87b5909d0d..906da1fde7c8 100644
--- a/drivers/video/console/sticon.c
+++ b/drivers/video/console/sticon.c
@@ -71,8 +71,8 @@ static const char *sticon_startup(void)
return "STI console";
}
-static void sticon_putcs(struct vc_data *conp, const unsigned short *s,
- int count, int ypos, int xpos)
+static void sticon_putcs(struct vc_data *conp, const u16 *s, unsigned int count,
+ unsigned int ypos, unsigned int xpos)
{
if (vga_is_gfx || console_blanked)
return;
diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c
index 2cb75be74c38..558076462b0d 100644
--- a/drivers/video/console/vgacon.c
+++ b/drivers/video/console/vgacon.c
@@ -1193,8 +1193,8 @@ static bool vgacon_scroll(struct vc_data *c, unsigned int t, unsigned int b,
static void vgacon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
unsigned int width) { }
-static void vgacon_putcs(struct vc_data *vc, const unsigned short *s,
- int count, int ypos, int xpos) { }
+static void vgacon_putcs(struct vc_data *vc, const u16 *s, unsigned int count,
+ unsigned int ypos, unsigned int xpos) { }
const struct consw vga_con = {
.owner = THIS_MODULE,
diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index 38de0f8723aa..7a7b2ac0d7a9 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -1279,8 +1279,8 @@ static void fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
__fbcon_clear(vc, sy, sx, 1, width);
}
-static void fbcon_putcs(struct vc_data *vc, const unsigned short *s,
- int count, int ypos, int xpos)
+static void fbcon_putcs(struct vc_data *vc, const u16 *s, unsigned int count,
+ unsigned int ypos, unsigned int xpos)
{
struct fb_info *info = fbcon_info_from_console(vc->vc_num);
struct fbcon_display *p = &fb_display[vc->vc_num];
diff --git a/include/linux/console.h b/include/linux/console.h
index 92d57e5b3009..82d55764a66f 100644
--- a/include/linux/console.h
+++ b/include/linux/console.h
@@ -41,6 +41,7 @@ enum vc_intensity;
* @con_clear: erase @count characters at [@x, @y] on @vc. @count >= 1.
* @con_putc: emit one character with attributes @ca to [@x, @y] on @vc.
* (optional -- @con_putcs would be called instead)
+ * @con_putcs: emit @count characters with attributes @s to [@x, @y] on @vc.
* @con_scroll: move lines from @top to @bottom in direction @dir by @lines.
* Return true if no generic handling should be done.
* Invoked by csi_M and printing to the console.
@@ -57,8 +58,9 @@ struct consw {
unsigned int x, unsigned int count);
void (*con_putc)(struct vc_data *vc, u16 ca, unsigned int y,
unsigned int x);
- void (*con_putcs)(struct vc_data *vc, const unsigned short *s,
- int count, int ypos, int xpos);
+ void (*con_putcs)(struct vc_data *vc, const u16 *s,
+ unsigned int count, unsigned int ypos,
+ unsigned int xpos);
void (*con_cursor)(struct vc_data *vc, int mode);
bool (*con_scroll)(struct vc_data *vc, unsigned int top,
unsigned int bottom, enum con_scroll dir,
--
2.43.0
next prev parent reply other threads:[~2024-01-18 7:58 UTC|newest]
Thread overview: 81+ 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 ` 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 ` 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 ` 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 ` [PATCH 05/45] tty: vt: pass proper pointers from tioclinux() Jiri Slaby (SUSE)
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 ` 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 ` 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 7:57 ` Jiri Slaby (SUSE)
2024-01-18 8:56 ` Geert Uytterhoeven
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 ` 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 ` 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 ` 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 ` Jiri Slaby (SUSE)
2024-01-18 7:57 ` Jiri Slaby (SUSE) [this message]
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 ` 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 ` Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 28/45] tty: vt: remove CM_* constants Jiri Slaby (SUSE)
2024-01-18 7:57 ` 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 ` 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 ` Jiri Slaby (SUSE)
2024-01-18 7:57 ` [PATCH 31/45] tty: vt: use VESA blanking constants Jiri Slaby (SUSE)
2024-01-18 7:57 ` 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 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 7:57 ` Jiri Slaby (SUSE)
2024-01-18 8:38 ` Thomas Zimmermann
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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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-26-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.