]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
Revert "VT: Use macros to define ioctls"
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 1 Jun 2024 05:28:21 +0000 (07:28 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 1 Jun 2024 05:28:21 +0000 (07:28 +0200)
This reverts commit 8c467f3300591a206fa8dcc6988d768910799872.

Turns out this breaks many architectures as the vt ioctls do not all
match up everywhere due to historical reasons, so the original commit is
invalid for many values.

Reported-by: Nick Bowler <nbowler@draconx.ca>
Reported-by: Arnd Bergmann <arnd@kernel.org>
Reported-by: Jiri Slaby <jirislaby@kernel.org>
Reported-by: Christian Zigotzky <chzigotzky@xenosoft.de>
Reported-by: Michael Ellerman <mpe@ellerman.id.au>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Alexey Gladkov <legion@kernel.org>
Link: https://lore.kernel.org/r/ad4e561c-1d49-4f25-882c-7a36c6b1b5c0@draconx.ca
Link: https://lore.kernel.org/r/0da9785e-ba44-4718-9d08-4e96c1ba7ab2@kernel.org
Link: https://lore.kernel.org/all/34d848f4-670b-4493-bf21-130ef862521b@xenosoft.de/
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/uapi/linux/kd.h

index 8ddb2219a84bdfa6412097e0375e7c3f92a19560..6b384065c01356efbe8db490fd3f85c9cebbe6d3 100644 (file)
@@ -5,61 +5,60 @@
 #include <linux/compiler.h>
 
 /* 0x4B is 'K', to avoid collision with termios and vt */
-#define KD_IOCTL_BASE  'K'
 
-#define GIO_FONT       _IO(KD_IOCTL_BASE, 0x60)        /* gets font in expanded form */
-#define PIO_FONT       _IO(KD_IOCTL_BASE, 0x61)        /* use font in expanded form */
+#define GIO_FONT       0x4B60  /* gets font in expanded form */
+#define PIO_FONT       0x4B61  /* use font in expanded form */
 
-#define GIO_FONTX      _IO(KD_IOCTL_BASE, 0x6B)        /* get font using struct consolefontdesc */
-#define PIO_FONTX      _IO(KD_IOCTL_BASE, 0x6C)        /* set font using struct consolefontdesc */
+#define GIO_FONTX      0x4B6B  /* get font using struct consolefontdesc */
+#define PIO_FONTX      0x4B6C  /* set font using struct consolefontdesc */
 struct consolefontdesc {
        unsigned short charcount;       /* characters in font (256 or 512) */
        unsigned short charheight;      /* scan lines per character (1-32) */
        char __user *chardata;          /* font data in expanded form */
 };
 
-#define PIO_FONTRESET  _IO(KD_IOCTL_BASE, 0x6D)        /* reset to default font */
+#define PIO_FONTRESET   0x4B6D /* reset to default font */
 
-#define GIO_CMAP       _IO(KD_IOCTL_BASE, 0x70)        /* gets colour palette on VGA+ */
-#define PIO_CMAP       _IO(KD_IOCTL_BASE, 0x71)        /* sets colour palette on VGA+ */
+#define GIO_CMAP       0x4B70  /* gets colour palette on VGA+ */
+#define PIO_CMAP       0x4B71  /* sets colour palette on VGA+ */
 
-#define KIOCSOUND      _IO(KD_IOCTL_BASE, 0x2F)        /* start sound generation (0 for off) */
-#define KDMKTONE       _IO(KD_IOCTL_BASE, 0x30)        /* generate tone */
+#define KIOCSOUND      0x4B2F  /* start sound generation (0 for off) */
+#define KDMKTONE       0x4B30  /* generate tone */
 
-#define KDGETLED       _IO(KD_IOCTL_BASE, 0x31)        /* return current led state */
-#define KDSETLED       _IO(KD_IOCTL_BASE, 0x32)        /* set led state [lights, not flags] */
+#define KDGETLED       0x4B31  /* return current led state */
+#define KDSETLED       0x4B32  /* set led state [lights, not flags] */
 #define        LED_SCR         0x01    /* scroll lock led */
 #define        LED_NUM         0x02    /* num lock led */
 #define        LED_CAP         0x04    /* caps lock led */
 
-#define KDGKBTYPE      _IO(KD_IOCTL_BASE, 0x33)        /* get keyboard type */
+#define KDGKBTYPE      0x4B33  /* get keyboard type */
 #define        KB_84           0x01
 #define        KB_101          0x02    /* this is what we always answer */
 #define        KB_OTHER        0x03
 
-#define KDADDIO                _IO(KD_IOCTL_BASE, 0x34)        /* add i/o port as valid */
-#define KDDELIO                _IO(KD_IOCTL_BASE, 0x35)        /* del i/o port as valid */
-#define KDENABIO       _IO(KD_IOCTL_BASE, 0x36)        /* enable i/o to video board */
-#define KDDISABIO      _IO(KD_IOCTL_BASE, 0x37)        /* disable i/o to video board */
+#define KDADDIO                0x4B34  /* add i/o port as valid */
+#define KDDELIO                0x4B35  /* del i/o port as valid */
+#define KDENABIO       0x4B36  /* enable i/o to video board */
+#define KDDISABIO      0x4B37  /* disable i/o to video board */
 
-#define KDSETMODE      _IO(KD_IOCTL_BASE, 0x3A)        /* set text/graphics mode */
+#define KDSETMODE      0x4B3A  /* set text/graphics mode */
 #define                KD_TEXT         0x00
 #define                KD_GRAPHICS     0x01
 #define                KD_TEXT0        0x02    /* obsolete */
 #define                KD_TEXT1        0x03    /* obsolete */
-#define KDGETMODE      _IO(KD_IOCTL_BASE, 0x3B)        /* get current mode */
+#define KDGETMODE      0x4B3B  /* get current mode */
 
-#define KDMAPDISP      _IO(KD_IOCTL_BASE, 0x3C)        /* map display into address space */
-#define KDUNMAPDISP    _IO(KD_IOCTL_BASE, 0x3D)        /* unmap display from address space */
+#define KDMAPDISP      0x4B3C  /* map display into address space */
+#define KDUNMAPDISP    0x4B3D  /* unmap display from address space */
 
 typedef char scrnmap_t;
 #define                E_TABSZ         256
-#define GIO_SCRNMAP    _IO(KD_IOCTL_BASE, 0x40)        /* get screen mapping from kernel */
-#define PIO_SCRNMAP    _IO(KD_IOCTL_BASE, 0x41)        /* put screen mapping table in kernel */
-#define GIO_UNISCRNMAP _IO(KD_IOCTL_BASE, 0x69)        /* get full Unicode screen mapping */
-#define PIO_UNISCRNMAP _IO(KD_IOCTL_BASE, 0x6A)        /* set full Unicode screen mapping */
+#define GIO_SCRNMAP    0x4B40  /* get screen mapping from kernel */
+#define PIO_SCRNMAP    0x4B41  /* put screen mapping table in kernel */
+#define GIO_UNISCRNMAP  0x4B69 /* get full Unicode screen mapping */
+#define PIO_UNISCRNMAP  0x4B6A  /* set full Unicode screen mapping */
 
-#define GIO_UNIMAP     _IO(KD_IOCTL_BASE, 0x66)        /* get unicode-to-font mapping from kernel */
+#define GIO_UNIMAP     0x4B66  /* get unicode-to-font mapping from kernel */
 struct unipair {
        unsigned short unicode;
        unsigned short fontpos;
@@ -68,8 +67,8 @@ struct unimapdesc {
        unsigned short entry_ct;
        struct unipair __user *entries;
 };
-#define PIO_UNIMAP     _IO(KD_IOCTL_BASE, 0x67)        /* put unicode-to-font mapping in kernel */
-#define PIO_UNIMAPCLR  _IO(KD_IOCTL_BASE, 0x68)        /* clear table, possibly advise hash algorithm */
+#define PIO_UNIMAP     0x4B67  /* put unicode-to-font mapping in kernel */
+#define PIO_UNIMAPCLR  0x4B68  /* clear table, possibly advise hash algorithm */
 struct unimapinit {
        unsigned short advised_hashsize;  /* 0 if no opinion */
        unsigned short advised_hashstep;  /* 0 if no opinion */
@@ -84,19 +83,19 @@ struct unimapinit {
 #define                K_MEDIUMRAW     0x02
 #define                K_UNICODE       0x03
 #define                K_OFF           0x04
-#define KDGKBMODE      _IO(KD_IOCTL_BASE, 0x44)        /* gets current keyboard mode */
-#define KDSKBMODE      _IO(KD_IOCTL_BASE, 0x45)        /* sets current keyboard mode */
+#define KDGKBMODE      0x4B44  /* gets current keyboard mode */
+#define KDSKBMODE      0x4B45  /* sets current keyboard mode */
 
 #define                K_METABIT       0x03
 #define                K_ESCPREFIX     0x04
-#define KDGKBMETA      _IO(KD_IOCTL_BASE, 0x62)        /* gets meta key handling mode */
-#define KDSKBMETA      _IO(KD_IOCTL_BASE, 0x63)        /* sets meta key handling mode */
+#define KDGKBMETA      0x4B62  /* gets meta key handling mode */
+#define KDSKBMETA      0x4B63  /* sets meta key handling mode */
 
 #define                K_SCROLLLOCK    0x01
 #define                K_NUMLOCK       0x02
 #define                K_CAPSLOCK      0x04
-#define        KDGKBLED        _IO(KD_IOCTL_BASE, 0x64)        /* get led flags (not lights) */
-#define        KDSKBLED        _IO(KD_IOCTL_BASE, 0x65)        /* set led flags (not lights) */
+#define        KDGKBLED        0x4B64  /* get led flags (not lights) */
+#define        KDSKBLED        0x4B65  /* set led flags (not lights) */
 
 struct kbentry {
        unsigned char kb_table;
@@ -108,15 +107,15 @@ struct kbentry {
 #define                K_ALTTAB        0x02
 #define                K_ALTSHIFTTAB   0x03
 
-#define KDGKBENT       _IO(KD_IOCTL_BASE, 0x46)        /* gets one entry in translation table */
-#define KDSKBENT       _IO(KD_IOCTL_BASE, 0x47)        /* sets one entry in translation table */
+#define KDGKBENT       0x4B46  /* gets one entry in translation table */
+#define KDSKBENT       0x4B47  /* sets one entry in translation table */
 
 struct kbsentry {
        unsigned char kb_func;
        unsigned char kb_string[512];
 };
-#define KDGKBSENT      _IO(KD_IOCTL_BASE, 0x48)        /* gets one function key string entry */
-#define KDSKBSENT      _IO(KD_IOCTL_BASE, 0x49)        /* sets one function key string entry */
+#define KDGKBSENT      0x4B48  /* gets one function key string entry */
+#define KDSKBSENT      0x4B49  /* sets one function key string entry */
 
 struct kbdiacr {
         unsigned char diacr, base, result;
@@ -125,8 +124,8 @@ struct kbdiacrs {
         unsigned int kb_cnt;    /* number of entries in following array */
        struct kbdiacr kbdiacr[256];    /* MAX_DIACR from keyboard.h */
 };
-#define KDGKBDIACR     _IO(KD_IOCTL_BASE, 0x4A)  /* read kernel accent table */
-#define KDSKBDIACR     _IO(KD_IOCTL_BASE, 0x4B)  /* write kernel accent table */
+#define KDGKBDIACR      0x4B4A  /* read kernel accent table */
+#define KDSKBDIACR      0x4B4B  /* write kernel accent table */
 
 struct kbdiacruc {
        unsigned int diacr, base, result;
@@ -135,16 +134,16 @@ struct kbdiacrsuc {
         unsigned int kb_cnt;    /* number of entries in following array */
        struct kbdiacruc kbdiacruc[256];    /* MAX_DIACR from keyboard.h */
 };
-#define KDGKBDIACRUC   _IO(KD_IOCTL_BASE, 0xFA)  /* read kernel accent table - UCS */
-#define KDSKBDIACRUC   _IO(KD_IOCTL_BASE, 0xFB)  /* write kernel accent table - UCS */
+#define KDGKBDIACRUC    0x4BFA  /* read kernel accent table - UCS */
+#define KDSKBDIACRUC    0x4BFB  /* write kernel accent table - UCS */
 
 struct kbkeycode {
        unsigned int scancode, keycode;
 };
-#define KDGETKEYCODE   _IO(KD_IOCTL_BASE, 0x4C)        /* read kernel keycode table entry */
-#define KDSETKEYCODE   _IO(KD_IOCTL_BASE, 0x4D)        /* write kernel keycode table entry */
+#define KDGETKEYCODE   0x4B4C  /* read kernel keycode table entry */
+#define KDSETKEYCODE   0x4B4D  /* write kernel keycode table entry */
 
-#define KDSIGACCEPT    _IO(KD_IOCTL_BASE, 0x4E)        /* accept kbd generated signals */
+#define KDSIGACCEPT    0x4B4E  /* accept kbd generated signals */
 
 struct kbd_repeat {
        int delay;      /* in msec; <= 0: don't change */
@@ -152,11 +151,10 @@ struct kbd_repeat {
                        /* earlier this field was misnamed "rate" */
 };
 
-#define KDKBDREP       _IO(KD_IOCTL_BASE, 0x52)        /* set keyboard delay/repeat rate;
-                                                        * actually used values are returned
-                                                        */
+#define KDKBDREP        0x4B52  /* set keyboard delay/repeat rate;
+                                * actually used values are returned */
 
-#define KDFONTOP       _IO(KD_IOCTL_BASE, 0x72)        /* font operations */
+#define KDFONTOP       0x4B72  /* font operations */
 
 struct console_font_op {
        unsigned int op;        /* operation code KD_FONT_OP_* */