]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
vt: selection, introduce vc_is_sel
authorJiri Slaby <jslaby@suse.cz>
Wed, 19 Feb 2020 07:39:43 +0000 (08:39 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 2 Apr 2020 13:28:22 +0000 (15:28 +0200)
commit dce05aa6eec977f1472abed95ccd71276b9a3864 upstream.

Avoid global variables (namely sel_cons) by introducing vc_is_sel. It
checks whether the parameter is the current selection console. This will
help putting sel_cons to a struct later.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20200219073951.16151-1-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/vt/selection.c
drivers/tty/vt/vt.c
drivers/tty/vt/vt_ioctl.c
include/linux/selection.h

index 8a16717248356d95a601e198a5b6733a4aba9876..34a0e529cb5a34a92f465bc81aab9e9262f8d403 100644 (file)
@@ -85,6 +85,11 @@ void clear_selection(void)
        }
 }
 
+bool vc_is_sel(struct vc_data *vc)
+{
+       return vc == sel_cons;
+}
+
 /*
  * User settable table: what characters are to be considered alphabetic?
  * 128 bits. Locked by the console lock.
index 5cecf529562a3eacc6f30e5df886b20773233ba0..88da9fb50dd68f7651a35f1d06384bff80bf6aa3 100644 (file)
@@ -890,8 +890,9 @@ static void hide_softcursor(struct vc_data *vc)
 
 static void hide_cursor(struct vc_data *vc)
 {
-       if (vc == sel_cons)
+       if (vc_is_sel(vc))
                clear_selection();
+
        vc->vc_sw->con_cursor(vc, CM_ERASE);
        hide_softcursor(vc);
 }
@@ -901,7 +902,7 @@ static void set_cursor(struct vc_data *vc)
        if (!con_is_fg(vc) || console_blanked || vc->vc_mode == KD_GRAPHICS)
                return;
        if (vc->vc_deccm) {
-               if (vc == sel_cons)
+               if (vc_is_sel(vc))
                        clear_selection();
                add_softcursor(vc);
                if ((vc->vc_cursor_type & 0x0f) != 1)
@@ -1210,7 +1211,7 @@ static int vc_do_resize(struct tty_struct *tty, struct vc_data *vc,
                }
        }
 
-       if (vc == sel_cons)
+       if (vc_is_sel(vc))
                clear_selection();
 
        old_rows = vc->vc_rows;
index 2bb6de89b0298ff0d9d9258038aaeddc97b0bb17..2b17fac5866ca46fd2362d58a422c683464bf248 100644 (file)
@@ -43,7 +43,7 @@ char vt_dont_switch;
 extern struct tty_driver *console_driver;
 
 #define VT_IS_IN_USE(i)        (console_driver->ttys[i] && console_driver->ttys[i]->count)
-#define VT_BUSY(i)     (VT_IS_IN_USE(i) || i == fg_console || vc_cons[i].d == sel_cons)
+#define VT_BUSY(i)     (VT_IS_IN_USE(i) || i == fg_console || vc_is_sel(vc_cons[i].d))
 
 /*
  * Console (vt and kd) routines, as defined by USL SVR4 manual, and by
index a8f5b97b216f5380803c41fb1f138a405767da07..77a1fb7c3fd5771efea86cc880a87511e4f2525d 100644 (file)
@@ -13,8 +13,8 @@
 
 struct tty_struct;
 
-extern struct vc_data *sel_cons;
 struct tty_struct;
+struct vc_data;
 
 extern void clear_selection(void);
 extern int set_selection(const struct tiocl_selection __user *sel, struct tty_struct *tty);
@@ -23,6 +23,8 @@ extern int sel_loadlut(char __user *p);
 extern int mouse_reporting(void);
 extern void mouse_report(struct tty_struct * tty, int butt, int mrx, int mry);
 
+bool vc_is_sel(struct vc_data *vc);
+
 extern int console_blanked;
 
 extern const unsigned char color_table[];