]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
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 f6156d8169d05b259c1fb35219efa7d6e3def735..2421f59cf27996cb560f27fb90c6823ed69b67f0 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 bb477d5c8528611776abee1fe7584f1d65389d89..f058ed6bdb697396c8b6c3f09b567c82be9626ac 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 862735005b4318eff1cfb9ad7af95385c3f7a405..20e8fa46f6473ef7023452755090e5a77023d6cb 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 f34ec01d22394d75987418564aa25785e3398929..d2abc2cf3213b7f3f94ac2a5e5eb889bc47eab53 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 b6d19adf8f4111d575c88b235142d6ed0580654f..f0f5b5be63140bdc11ad67334ebd7d51910d4f6b 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 b07954a7953679b077b12b190343492a3271510f..769fca692d2aa7e5b51381cab8a7d4b37921610c 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 81314f9e2ccb9c8bffccdc699cca698820081625..33c3a442e162616caf3ccee97d640e45f749414a 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 fb5d7250de38d75f5f7b27cafcc7e674390ae7d0..2a92cfe6cfe97500511488708be3686ad4d2aa84 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 3c494dc93b936d4680aca2a70ccee94d1fba7938..a57bc635d7585fe7a1bbed1e64a6b395861fd0fa 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 dae4d4344407875bb627acbe25b115b5fb734a19..83dcc85b86882af55cdb0c6de5f75b36c23857de 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 1079133dd6ab17fc856677a328ea54563028c555..eda32d7eddbdc89a9181e5e319cb1d65cf1d4b81 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 0b8d0de872732e618a55f6b26e9bec9935956d60..4f0c3a232e41a7686fb04795deb7300d03220ea6 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");