Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Annotate hardware config module parameters in drivers/net/hamradio/

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 drivers/net/hamradio/.

Suggested-by: Alan Cox <gnomes@lxorguk.ukuu.org.uk>
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Thomas Sailer <t.sailer@alumni.ethz.ch>
cc: Joerg Reuter <jreuter@yaina.de>
cc: linux-hams@vger.kernel.org
cc: netdev@vger.kernel.org

+7 -7
+1 -1
drivers/net/hamradio/baycom_epp.c
··· 1176 1176 1177 1177 module_param_array(mode, charp, NULL, 0); 1178 1178 MODULE_PARM_DESC(mode, "baycom operating mode"); 1179 - module_param_array(iobase, int, NULL, 0); 1179 + module_param_hw_array(iobase, int, ioport, NULL, 0); 1180 1180 MODULE_PARM_DESC(iobase, "baycom io base address"); 1181 1181 1182 1182 MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
+1 -1
drivers/net/hamradio/baycom_par.c
··· 481 481 482 482 module_param_array(mode, charp, NULL, 0); 483 483 MODULE_PARM_DESC(mode, "baycom operating mode; eg. par96 or picpar"); 484 - module_param_array(iobase, int, NULL, 0); 484 + module_param_hw_array(iobase, int, ioport, NULL, 0); 485 485 MODULE_PARM_DESC(iobase, "baycom io base address"); 486 486 487 487 MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
+2 -2
drivers/net/hamradio/baycom_ser_fdx.c
··· 614 614 615 615 module_param_array(mode, charp, NULL, 0); 616 616 MODULE_PARM_DESC(mode, "baycom operating mode; * for software DCD"); 617 - module_param_array(iobase, int, NULL, 0); 617 + module_param_hw_array(iobase, int, ioport, NULL, 0); 618 618 MODULE_PARM_DESC(iobase, "baycom io base address"); 619 - module_param_array(irq, int, NULL, 0); 619 + module_param_hw_array(irq, int, irq, NULL, 0); 620 620 MODULE_PARM_DESC(irq, "baycom irq number"); 621 621 module_param_array(baud, int, NULL, 0); 622 622 MODULE_PARM_DESC(baud, "baycom baud rate (300 to 4800)");
+2 -2
drivers/net/hamradio/baycom_ser_hdx.c
··· 642 642 643 643 module_param_array(mode, charp, NULL, 0); 644 644 MODULE_PARM_DESC(mode, "baycom operating mode; * for software DCD"); 645 - module_param_array(iobase, int, NULL, 0); 645 + module_param_hw_array(iobase, int, ioport, NULL, 0); 646 646 MODULE_PARM_DESC(iobase, "baycom io base address"); 647 - module_param_array(irq, int, NULL, 0); 647 + module_param_hw_array(irq, int, irq, NULL, 0); 648 648 MODULE_PARM_DESC(irq, "baycom irq number"); 649 649 650 650 MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
+1 -1
drivers/net/hamradio/dmascc.c
··· 274 274 275 275 MODULE_AUTHOR("Klaus Kudielka"); 276 276 MODULE_DESCRIPTION("Driver for high-speed SCC boards"); 277 - module_param_array(io, int, NULL, 0); 277 + module_param_hw_array(io, int, ioport, NULL, 0); 278 278 MODULE_LICENSE("GPL"); 279 279 280 280 static void __exit dmascc_exit(void)