Annotate hardware config module parameters in sound/oss/
authorDavid Howells <dhowells@redhat.com>
Tue, 4 Apr 2017 15:54:30 +0000 (16:54 +0100)
committerDavid Howells <dhowells@redhat.com>
Thu, 20 Apr 2017 11:02:32 +0000 (12:02 +0100)
When the kernel is running in secure boot mode, we lock down the kernel to
prevent userspace from modifying the running kernel image.  Whilst this
includes prohibiting access to things like /dev/mem, it must also prevent
access by means of configuring driver modules in such a way as to cause a
device to access or modify the kernel image.

To this end, annotate module_param* statements that refer to hardware
configuration and indicate for future reference what type of parameter they
specify.  The parameter parser in the core sees this information and can
skip such parameters with an error message if the kernel is locked down.
The module initialisation then runs as normal, but just sees whatever the
default values for those parameters is.

Note that we do still need to do the module initialisation because some
drivers have viable defaults set in case parameters aren't specified and
some drivers support automatic configuration (e.g. PNP or PCI) in addition
to manually coded parameters.

This patch annotates drivers in sound/oss/.

Suggested-by: Alan Cox <gnomes@lxorguk.ukuu.org.uk>
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Jaroslav Kysela <perex@perex.cz>
cc: Takashi Iwai <tiwai@suse.com>
cc: Andrew Veliath <andrewtv@usa.net>
cc: alsa-devel@alsa-project.org

12 files changed:
sound/oss/ad1848.c
sound/oss/aedsp16.c
sound/oss/mpu401.c
sound/oss/msnd_pinnacle.c
sound/oss/opl3.c
sound/oss/pas2_card.c
sound/oss/pss.c
sound/oss/sb_card.c
sound/oss/trix.c
sound/oss/uart401.c
sound/oss/uart6850.c
sound/oss/waveartist.c

index f6156d8..2421f59 100644 (file)
@@ -2805,10 +2805,10 @@ static int __initdata dma = -1;
 static int __initdata dma2 = -1;
 static int __initdata type = 0;
 
-module_param(io, int, 0);              /* I/O for a raw AD1848 card */
-module_param(irq, int, 0);             /* IRQ to use */
-module_param(dma, int, 0);             /* First DMA channel */
-module_param(dma2, int, 0);            /* Second DMA channel */
+module_param_hw(io, int, ioport, 0);   /* I/O for a raw AD1848 card */
+module_param_hw(irq, int, irq, 0);     /* IRQ to use */
+module_param_hw(dma, int, dma, 0);     /* First DMA channel */
+module_param_hw(dma2, int, dma, 0);    /* Second DMA channel */
 module_param(type, int, 0);            /* Card type */
 module_param(deskpro_xl, bool, 0);     /* Special magic for Deskpro XL boxen */
 module_param(deskpro_m, bool, 0);      /* Special magic for Deskpro M box */
index bb477d5..f058ed6 100644 (file)
@@ -1303,17 +1303,17 @@ static int __initdata mpu_irq = -1;
 static int __initdata mss_base = -1;
 static int __initdata mpu_base = -1;
 
-module_param(io, int, 0);
+module_param_hw(io, int, ioport, 0);
 MODULE_PARM_DESC(io, "I/O base address (0x220 0x240)");
-module_param(irq, int, 0);
+module_param_hw(irq, int, irq, 0);
 MODULE_PARM_DESC(irq, "IRQ line (5 7 9 10 11)");
-module_param(dma, int, 0);
+module_param_hw(dma, int, dma, 0);
 MODULE_PARM_DESC(dma, "dma line (0 1 3)");
-module_param(mpu_irq, int, 0);
+module_param_hw(mpu_irq, int, irq, 0);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ line (5 7 9 10 0)");
-module_param(mss_base, int, 0);
+module_param_hw(mss_base, int, ioport, 0);
 MODULE_PARM_DESC(mss_base, "MSS emulation I/O base address (0x530 0xE80)");
-module_param(mpu_base, int, 0);
+module_param_hw(mpu_base, int, ioport, 0);
 MODULE_PARM_DESC(mpu_base,"MPU-401 I/O base address (0x300 0x310 0x320 0x330)");
 MODULE_AUTHOR("Riccardo Facchetti <fizban@tin.it>");
 MODULE_DESCRIPTION("Audio Excel DSP 16 Driver Version " VERSION);
index 8627350..20e8fa4 100644 (file)
@@ -1748,8 +1748,8 @@ static struct address_info cfg;
 static int io = -1;
 static int irq = -1;
 
-module_param(irq, int, 0);
-module_param(io, int, 0);
+module_param_hw(irq, int, irq, 0);
+module_param_hw(io, int, ioport, 0);
 
 static int __init init_mpu401(void)
 {
index f34ec01..d2abc2c 100644 (file)
@@ -1727,22 +1727,22 @@ static int
 calibrate_signal __initdata =          CONFIG_MSND_CALSIGNAL;
 #endif /* MODULE */
 
-module_param                           (io, int, 0);
-module_param                           (irq, int, 0);
-module_param                           (mem, int, 0);
+module_param_hw                                (io, int, ioport, 0);
+module_param_hw                                (irq, int, irq, 0);
+module_param_hw                                (mem, int, iomem, 0);
 module_param                           (write_ndelay, int, 0);
 module_param                           (fifosize, int, 0);
 module_param                           (calibrate_signal, int, 0);
 #ifndef MSND_CLASSIC
 module_param                           (digital, bool, 0);
-module_param                           (cfg, int, 0);
+module_param_hw                                (cfg, int, ioport, 0);
 module_param                           (reset, int, 0);
-module_param                           (mpu_io, int, 0);
-module_param                           (mpu_irq, int, 0);
-module_param                           (ide_io0, int, 0);
-module_param                           (ide_io1, int, 0);
-module_param                           (ide_irq, int, 0);
-module_param                           (joystick_io, int, 0);
+module_param_hw                                (mpu_io, int, ioport, 0);
+module_param_hw                                (mpu_irq, int, irq, 0);
+module_param_hw                                (ide_io0, int, ioport, 0);
+module_param_hw                                (ide_io1, int, ioport, 0);
+module_param_hw                                (ide_irq, int, irq, 0);
+module_param_hw                                (joystick_io, int, ioport, 0);
 #endif
 
 static int __init msnd_init(void)
index b6d19ad..f0f5b5b 100644 (file)
@@ -1200,7 +1200,7 @@ static int me;
 
 static int io = -1;
 
-module_param(io, int, 0);
+module_param_hw(io, int, ioport, 0);
 
 static int __init init_opl3 (void)
 {
index b07954a..769fca6 100644 (file)
@@ -383,15 +383,15 @@ static int __initdata sb_irq      = -1;
 static int __initdata sb_dma   = -1;
 static int __initdata sb_dma16 = -1;
 
-module_param(io, int, 0);
-module_param(irq, int, 0);
-module_param(dma, int, 0);
-module_param(dma16, int, 0);
-
-module_param(sb_io, int, 0);
-module_param(sb_irq, int, 0);
-module_param(sb_dma, int, 0);
-module_param(sb_dma16, int, 0);
+module_param_hw(io, int, ioport, 0);
+module_param_hw(irq, int, irq, 0);
+module_param_hw(dma, int, dma, 0);
+module_param_hw(dma16, int, dma, 0);
+
+module_param_hw(sb_io, int, ioport, 0);
+module_param_hw(sb_irq, int, irq, 0);
+module_param_hw(sb_dma, int, dma, 0);
+module_param_hw(sb_dma16, int, dma, 0);
 
 module_param(joystick, bool, 0);
 module_param(symphony, bool, 0);
index 81314f9..33c3a44 100644 (file)
@@ -1139,19 +1139,19 @@ static bool pss_no_sound = 0;   /* Just configure non-sound components */
 static bool pss_keep_settings  = 1;    /* Keep hardware settings at module exit */
 static char *pss_firmware = "/etc/sound/pss_synth";
 
-module_param(pss_io, int, 0);
+module_param_hw(pss_io, int, ioport, 0);
 MODULE_PARM_DESC(pss_io, "Set i/o base of PSS card (probably 0x220 or 0x240)");
-module_param(mss_io, int, 0);
+module_param_hw(mss_io, int, ioport, 0);
 MODULE_PARM_DESC(mss_io, "Set WSS (audio) i/o base (0x530, 0x604, 0xE80, 0xF40, or other. Address must end in 0 or 4 and must be from 0x100 to 0xFF4)");
-module_param(mss_irq, int, 0);
+module_param_hw(mss_irq, int, irq, 0);
 MODULE_PARM_DESC(mss_irq, "Set WSS (audio) IRQ (3, 5, 7, 9, 10, 11, 12)");
-module_param(mss_dma, int, 0);
+module_param_hw(mss_dma, int, dma, 0);
 MODULE_PARM_DESC(mss_dma, "Set WSS (audio) DMA (0, 1, 3)");
-module_param(mpu_io, int, 0);
+module_param_hw(mpu_io, int, ioport, 0);
 MODULE_PARM_DESC(mpu_io, "Set MIDI i/o base (0x330 or other. Address must be on 4 location boundaries and must be from 0x100 to 0xFFC)");
-module_param(mpu_irq, int, 0);
+module_param_hw(mpu_irq, int, irq, 0);
 MODULE_PARM_DESC(mpu_irq, "Set MIDI IRQ (3, 5, 7, 9, 10, 11, 12)");
-module_param(pss_cdrom_port, int, 0);
+module_param_hw(pss_cdrom_port, int, ioport, 0);
 MODULE_PARM_DESC(pss_cdrom_port, "Set the PSS CDROM port i/o base (0x340 or other)");
 module_param(pss_enable_joystick, bool, 0);
 MODULE_PARM_DESC(pss_enable_joystick, "Enables the PSS joystick port (1 to enable, 0 to disable)");
index fb5d725..2a92cfe 100644 (file)
@@ -61,15 +61,15 @@ static int __initdata uart401       = 0;
 static int __initdata pnp       = 0;
 #endif
 
-module_param(io, int, 000);
+module_param_hw(io, int, ioport, 000);
 MODULE_PARM_DESC(io,       "Soundblaster i/o base address (0x220,0x240,0x260,0x280)");
-module_param(irq, int, 000);
+module_param_hw(irq, int, irq, 000);
 MODULE_PARM_DESC(irq,     "IRQ (5,7,9,10)");
-module_param(dma, int, 000);
+module_param_hw(dma, int, dma, 000);
 MODULE_PARM_DESC(dma,     "8-bit DMA channel (0,1,3)");
-module_param(dma16, int, 000);
+module_param_hw(dma16, int, dma, 000);
 MODULE_PARM_DESC(dma16,           "16-bit DMA channel (5,6,7)");
-module_param(mpu_io, int, 000);
+module_param_hw(mpu_io, int, ioport, 000);
 MODULE_PARM_DESC(mpu_io,   "MPU base address");
 module_param(type, int, 000);
 MODULE_PARM_DESC(type,    "You can set this to specific card type (doesn't " \
index 3c494dc..a57bc63 100644 (file)
@@ -413,15 +413,15 @@ static int __initdata sb_irq      = -1;
 static int __initdata mpu_io   = -1;
 static int __initdata mpu_irq  = -1;
 
-module_param(io, int, 0);
-module_param(irq, int, 0);
-module_param(dma, int, 0);
-module_param(dma2, int, 0);
-module_param(sb_io, int, 0);
-module_param(sb_dma, int, 0);
-module_param(sb_irq, int, 0);
-module_param(mpu_io, int, 0);
-module_param(mpu_irq, int, 0);
+module_param_hw(io, int, ioport, 0);
+module_param_hw(irq, int, irq, 0);
+module_param_hw(dma, int, dma, 0);
+module_param_hw(dma2, int, dma, 0);
+module_param_hw(sb_io, int, ioport, 0);
+module_param_hw(sb_dma, int, dma, 0);
+module_param_hw(sb_irq, int, irq, 0);
+module_param_hw(mpu_io, int, ioport, 0);
+module_param_hw(mpu_irq, int, irq, 0);
 module_param(joystick, bool, 0);
 
 static int __init init_trix(void)
index dae4d43..83dcc85 100644 (file)
@@ -429,8 +429,8 @@ static struct address_info cfg_mpu;
 static int io = -1;
 static int irq = -1;
 
-module_param(io, int, 0444);
-module_param(irq, int, 0444);
+module_param_hw(io, int, ioport, 0444);
+module_param_hw(irq, int, irq, 0444);
 
 
 static int __init init_uart401(void)
index 1079133..eda32d7 100644 (file)
@@ -315,8 +315,8 @@ static struct address_info cfg_mpu;
 static int __initdata io = -1;
 static int __initdata irq = -1;
 
-module_param(io, int, 0);
-module_param(irq, int, 0);
+module_param_hw(io, int, ioport, 0);
+module_param_hw(irq, int, irq, 0);
 
 static int __init init_uart6850(void)
 {
index 0b8d0de..4f0c3a2 100644 (file)
@@ -2036,8 +2036,8 @@ __setup("waveartist=", setup_waveartist);
 #endif
 
 MODULE_DESCRIPTION("Rockwell WaveArtist RWA-010 sound driver");
-module_param(io, int, 0);              /* IO base */
-module_param(irq, int, 0);             /* IRQ */
-module_param(dma, int, 0);             /* DMA */
-module_param(dma2, int, 0);            /* DMA2 */
+module_param_hw(io, int, ioport, 0);           /* IO base */
+module_param_hw(irq, int, irq, 0);             /* IRQ */
+module_param_hw(dma, int, dma, 0);             /* DMA */
+module_param_hw(dma2, int, dma, 0);            /* DMA2 */
 MODULE_LICENSE("GPL");