public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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 04/45] tty: vt: expect valid vc when in tty ops
Date: Thu, 18 Jan 2024 08:57:15 +0100	[thread overview]
Message-ID: <20240118075756.10541-5-jirislaby@kernel.org> (raw)
In-Reply-To: <20240118075756.10541-1-jirislaby@kernel.org>

At least since commits feebed6515a1 ("tty: shutdown method") and
bc1e99d93f09 ("TTY: vt, add ->install"), tty->driver_data in vc is
expected to be set since tty_operations::install() till ::cleanup().

So the checks of !tty->driver_data (aka !vc) in:
* vc_do_resize() by tty -> ioctl(TIOCSWINSZ) -> vt_resize()
* do_con_write() by tty -> tty_operations::write()/::put_char()
* con_flush_chars() by tty -> ::flush_chars()
are all superfluous. And also, holding a console lock is not needed to
fetch tty->driver_data.

Note there is even a stale comment in con_flush_chars() about a race
between that and con_close(). But con_close() does not set
tty->driver_data to NULL for years already.

Drop all these in a hope I am not terribly mistaken.

Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
---
 drivers/tty/vt/vt.c | 19 +++----------------
 1 file changed, 3 insertions(+), 16 deletions(-)

diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 55ce6cdecbca..e131edea00da 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -1154,9 +1154,6 @@ static int vc_do_resize(struct tty_struct *tty, struct vc_data *vc,
 
 	WARN_CONSOLE_UNLOCKED();
 
-	if (!vc)
-		return -ENXIO;
-
 	user = vc->vc_resize_user;
 	vc->vc_resize_user = 0;
 
@@ -2852,7 +2849,7 @@ static int do_con_write(struct tty_struct *tty, const u8 *buf, int count)
 	};
 	int c, tc, n = 0;
 	unsigned int currcons;
-	struct vc_data *vc;
+	struct vc_data *vc = tty->driver_data;
 	struct vt_notifier_param param;
 	bool rescan;
 
@@ -2860,13 +2857,6 @@ static int do_con_write(struct tty_struct *tty, const u8 *buf, int count)
 		return count;
 
 	console_lock();
-	vc = tty->driver_data;
-	if (vc == NULL) {
-		pr_err("vt: argh, driver_data is NULL !\n");
-		console_unlock();
-		return 0;
-	}
-
 	currcons = vc->vc_num;
 	if (!vc_cons_allocated(currcons)) {
 		/* could this happen? */
@@ -3312,16 +3302,13 @@ static void con_start(struct tty_struct *tty)
 
 static void con_flush_chars(struct tty_struct *tty)
 {
-	struct vc_data *vc;
+	struct vc_data *vc = tty->driver_data;
 
 	if (in_interrupt())	/* from flush_to_ldisc */
 		return;
 
-	/* if we race with con_close(), vt may be null */
 	console_lock();
-	vc = tty->driver_data;
-	if (vc)
-		set_cursor(vc);
+	set_cursor(vc);
 	console_unlock();
 }
 
-- 
2.43.0


  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 ` Jiri Slaby (SUSE) [this message]
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 ` [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-5-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