Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1534018
| From | David Howells <dhowells@redhat.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) |
| Date | 2016-12-01 13:30 +0100 |
| Message-ID | <sJyEV-3Or-25@gated-at.bofh.it> (permalink) |
| References | <sJyEV-3Or-7@gated-at.bofh.it> |
| Organization | Red Hat UK Ltd. Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SI4 1TE, United Kingdom. Registered in England and Wales under Company Registration No. 3798903 |
Provided an annotation for module parameters that specify hardware
parameters (such as io ports, iomem addresses, irqs, dma channels, fixed
dma buffers and other types).
This will enable such parameters to be locked down in the core parameter
parser for secure boot support.
I've also included annotations as to what sort of hardware configuration
each module is dealing with for future use. Some of these are
straightforward (ioport, iomem, irq, dma), but there are also:
(1) drivers that switch the semantics of a parameter between ioport and
iomem depending on a second parameter,
(2) drivers that appear to reserve a CPU memory buffer at a fixed address,
(3) other parameters, such as bus types and irq selection bitmasks.
For the moment, the hardware configuration type isn't actually stored,
though its validity is checked.
Signed-off-by: David Howells <dhowells@redhat.com>
---
include/linux/moduleparam.h | 65 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 64 insertions(+), 1 deletion(-)
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
index 52666d90ca94..6be1949ebcdf 100644
--- a/include/linux/moduleparam.h
+++ b/include/linux/moduleparam.h
@@ -60,9 +60,11 @@ struct kernel_param_ops {
* Flags available for kernel_param
*
* UNSAFE - the parameter is dangerous and setting it will taint the kernel
+ * HWPARAM - Hardware param not permitted in lockdown mode
*/
enum {
- KERNEL_PARAM_FL_UNSAFE = (1 << 0)
+ KERNEL_PARAM_FL_UNSAFE = (1 << 0),
+ KERNEL_PARAM_FL_HWPARAM = (1 << 1),
};
struct kernel_param {
@@ -451,6 +453,67 @@ extern int param_set_bint(const char *val, const struct kernel_param *kp);
perm, -1, 0); \
__MODULE_PARM_TYPE(name, "array of " #type)
+enum hwparam_type {
+ hwparam_ioport, /* Module parameter configures an I/O port */
+ hwparam_iomem, /* Module parameter configures an I/O mem address */
+ hwparam_ioport_or_iomem, /* Module parameter could be either, depending on other option */
+ hwparam_irq, /* Module parameter configures an I/O port */
+ hwparam_dma, /* Module parameter configures a DMA channel */
+ hwparam_dma_addr, /* Module parameter configures a DMA buffer address */
+ hwparam_other, /* Module parameter configures some other value */
+};
+
+/**
+ * module_param_hw_named - A parameter representing a hw parameters
+ * @name: a valid C identifier which is the parameter name.
+ * @value: the actual lvalue to alter.
+ * @type: the type of the parameter
+ * @hwtype: what the value represents (enum hwparam_type)
+ * @perm: visibility in sysfs.
+ *
+ * Usually it's a good idea to have variable names and user-exposed names the
+ * same, but that's harder if the variable must be non-static or is inside a
+ * structure. This allows exposure under a different name.
+ */
+#define module_param_hw_named(name, value, type, hwtype, perm) \
+ param_check_##type(name, &(value)); \
+ __module_param_call(MODULE_PARAM_PREFIX, name, \
+ ¶m_ops_##type, &value, \
+ perm, -1, \
+ KERNEL_PARAM_FL_HWPARAM | (hwparam_##hwtype & 0)); \
+ __MODULE_PARM_TYPE(name, #type)
+
+#define module_param_hw(name, type, hwtype, perm) \
+ module_param_hw_named(name, name, type, hwtype, perm)
+
+/**
+ * module_param_hw_array - A parameter representing an array of hw parameters
+ * @name: the name of the array variable
+ * @type: the type, as per module_param()
+ * @hwtype: what the value represents (enum hwparam_type)
+ * @nump: optional pointer filled in with the number written
+ * @perm: visibility in sysfs
+ *
+ * Input and output are as comma-separated values. Commas inside values
+ * don't work properly (eg. an array of charp).
+ *
+ * ARRAY_SIZE(@name) is used to determine the number of elements in the
+ * array, so the definition must be visible.
+ */
+#define module_param_hw_array(name, type, hwtype, nump, perm) \
+ param_check_##type(name, &(name)[0]); \
+ static const struct kparam_array __param_arr_##name \
+ = { .max = ARRAY_SIZE(name), .num = nump, \
+ .ops = ¶m_ops_##type, \
+ .elemsize = sizeof(name[0]), .elem = name }; \
+ __module_param_call(MODULE_PARAM_PREFIX, name, \
+ ¶m_array_ops, \
+ .arr = &__param_arr_##name, \
+ perm, -1, \
+ KERNEL_PARAM_FL_HWPARAM | (hwparam_##hwtype & 0)); \
+ __MODULE_PARM_TYPE(name, "array of " #type)
+
+
extern const struct kernel_param_ops param_array_ops;
extern const struct kernel_param_ops param_ops_string;
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 00/39] Annotate hw config module params for future lockdown David Howells <dhowells@redhat.com> - 2016-12-01 13:30 +0100
[PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) David Howells <dhowells@redhat.com> - 2016-12-01 13:30 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) Greg KH <gregkh@linuxfoundation.org> - 2016-12-01 16:10 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) David Howells <dhowells@redhat.com> - 2016-12-01 17:10 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk> - 2016-12-05 22:20 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) Greg KH <gregkh@linuxfoundation.org> - 2016-12-06 08:20 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) David Howells <dhowells@redhat.com> - 2016-12-06 11:50 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) Greg KH <gregkh@linuxfoundation.org> - 2016-12-06 12:00 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) Matthew Garrett <mjg59@srcf.ucam.org> - 2016-12-02 04:50 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) Greg KH <gregkh@linuxfoundation.org> - 2016-12-02 08:00 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) Matthew Garrett <mjg59@srcf.ucam.org> - 2016-12-02 08:20 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk> - 2016-12-05 22:30 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) David Howells <dhowells@redhat.com> - 2016-12-02 16:00 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) Greg KH <gregkh@linuxfoundation.org> - 2016-12-05 16:50 +0100
Re: [PATCH 01/39] Annotate module params that specify hardware parameters (eg. ioport) David Howells <dhowells@redhat.com> - 2016-12-06 12:00 +0100
[PATCH 20/39] Annotate hardware config module parameters in drivers/net/hamradio/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 34/39] Annotate hardware config module parameters in drivers/watchdog/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 34/39] Annotate hardware config module parameters in drivers/watchdog/ Guenter Roeck <linux@roeck-us.net> - 2016-12-01 14:00 +0100
[PATCH 03/39] Annotate hardware config module parameters in drivers/char/ipmi/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 03/39] Annotate hardware config module parameters in drivers/char/ipmi/ Corey Minyard <minyard@acm.org> - 2016-12-01 14:20 +0100
[PATCH 05/39] Annotate hardware config module parameters in drivers/char/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 28/39] Annotate hardware config module parameters in drivers/staging/i4l/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 07/39] Annotate hardware config module parameters in drivers/cpufreq/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 07/39] Annotate hardware config module parameters in drivers/cpufreq/ "Rafael J. Wysocki" <rafael@kernel.org> - 2016-12-01 15:10 +0100
Re: [PATCH 07/39] Annotate hardware config module parameters in drivers/cpufreq/ David Howells <dhowells@redhat.com> - 2016-12-01 15:20 +0100
Re: [PATCH 07/39] Annotate hardware config module parameters in drivers/cpufreq/ "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2016-12-01 15:30 +0100
[PATCH 39/39] Annotate hardware config module parameters in sound/pci/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 35/39] Annotate hardware config module parameters in fs/pstore/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 11/39] Annotate hardware config module parameters in drivers/input/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 11/39] Annotate hardware config module parameters in drivers/input/ Dmitry Torokhov <dmitry.torokhov@gmail.com> - 2016-12-03 20:00 +0100
[PATCH 21/39] Annotate hardware config module parameters in drivers/net/irda/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 31/39] Annotate hardware config module parameters in drivers/staging/vme/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 33/39] Annotate hardware config module parameters in drivers/video/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 04/39] Annotate hardware config module parameters in drivers/char/mwave/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 38/39] Annotate hardware config module parameters in sound/oss/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 06/39] Annotate hardware config module parameters in drivers/clocksource/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 12/39] Annotate hardware config module parameters in drivers/isdn/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 23/39] Annotate hardware config module parameters in drivers/net/wireless/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 23/39] Annotate hardware config module parameters in drivers/net/wireless/ Kalle Valo <kvalo@codeaurora.org> - 2016-12-02 06:10 +0100
Re: [PATCH 23/39] Annotate hardware config module parameters in drivers/net/wireless/ David Howells <dhowells@redhat.com> - 2016-12-07 14:50 +0100
[PATCH 29/39] Annotate hardware config module parameters in drivers/staging/media/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 29/39] Annotate hardware config module parameters in drivers/staging/media/ Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2016-12-01 16:00 +0100
Re: [PATCH 29/39] Annotate hardware config module parameters in drivers/staging/media/ David Howells <dhowells@redhat.com> - 2016-12-01 16:10 +0100
Re: [PATCH 29/39] Annotate hardware config module parameters in drivers/staging/media/ Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2016-12-01 16:20 +0100
[PATCH 09/39] Annotate hardware config module parameters in drivers/i2c/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 09/39] Annotate hardware config module parameters in drivers/i2c/ Jean Delvare <jdelvare@suse.de> - 2016-12-01 14:50 +0100
Re: [PATCH 09/39] Annotate hardware config module parameters in drivers/i2c/ David Howells <dhowells@redhat.com> - 2016-12-01 15:20 +0100
Re: [PATCH 09/39] Annotate hardware config module parameters in drivers/i2c/ Jean Delvare <jdelvare@suse.de> - 2016-12-01 17:10 +0100
Re: [PATCH 09/39] Annotate hardware config module parameters in drivers/i2c/ One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk> - 2016-12-05 22:20 +0100
[PATCH 19/39] Annotate hardware config module parameters in drivers/net/ethernet/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 18/39] Annotate hardware config module parameters in drivers/net/can/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 18/39] Annotate hardware config module parameters in drivers/net/can/ Marc Kleine-Budde <mkl@pengutronix.de> - 2016-12-01 14:10 +0100
[PATCH 25/39] Annotate hardware config module parameters in drivers/pci/hotplug/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 25/39] Annotate hardware config module parameters in drivers/pci/hotplug/ Bjorn Helgaas <helgaas@kernel.org> - 2016-12-07 19:40 +0100
[PATCH 27/39] Annotate hardware config module parameters in drivers/scsi/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 27/39] Annotate hardware config module parameters in drivers/scsi/ Finn Thain <fthain@telegraphics.com.au> - 2016-12-01 23:10 +0100
[PATCH 26/39] Annotate hardware config module parameters in drivers/pcmcia/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 08/39] Annotate hardware config module parameters in drivers/gpio/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 08/39] Annotate hardware config module parameters in drivers/gpio/ William Breathitt Gray <vilhelm.gray@gmail.com> - 2016-12-01 14:50 +0100
Re: [PATCH 08/39] Annotate hardware config module parameters in drivers/gpio/ Linus Walleij <linus.walleij@linaro.org> - 2016-12-02 14:00 +0100
[PATCH 32/39] Annotate hardware config module parameters in drivers/tty/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 32/39] Annotate hardware config module parameters in drivers/tty/ Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-12-01 16:10 +0100
[PATCH 13/39] Annotate hardware config module parameters in drivers/media/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 36/39] Annotate hardware config module parameters in sound/drivers/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 17/39] Annotate hardware config module parameters in drivers/net/arcnet/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 24/39] Annotate hardware config module parameters in drivers/parport/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 15/39] Annotate hardware config module parameters in drivers/mmc/host/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 02/39] Annotate hardware config module parameters in arch/x86/mm/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 16/39] Annotate hardware config module parameters in drivers/net/appletalk/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 37/39] Annotate hardware config module parameters in sound/isa/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 30/39] Annotate hardware config module parameters in drivers/staging/speakup/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 22/39] Annotate hardware config module parameters in drivers/net/wan/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
[PATCH 10/39] Annotate hardware config module parameters in drivers/iio/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
Re: [PATCH 10/39] Annotate hardware config module parameters in drivers/iio/ William Breathitt Gray <vilhelm.gray@gmail.com> - 2016-12-01 15:00 +0100
Re: [PATCH 10/39] Annotate hardware config module parameters in drivers/iio/ Jonathan Cameron <jic23@kernel.org> - 2016-12-03 15:40 +0100
Re: [PATCH 10/39] Annotate hardware config module parameters in drivers/iio/ David Howells <dhowells@redhat.com> - 2016-12-07 14:50 +0100
[PATCH 14/39] Annotate hardware config module parameters in drivers/misc/ David Howells <dhowells@redhat.com> - 2016-12-01 13:40 +0100
csiph-web