[PATCH linux dev-4.18] /dev/mem: add a devmem kernel parameter to activate the device

Joel Stanley joel at jms.id.au
Mon Oct 22 09:24:01 AEDT 2018


On Fri, 12 Oct 2018 at 18:37, Cédric Le Goater <clg at kaod.org> wrote:
>
> For security reasons, some configuration needs to run without /dev/mem
> but on some occasions, to debug HW for instance, it's still useful to
> be able to reboot the system with access to physical memory.
>
> Add a kernel parameter which activates the /dev/mem device only when
> 'mem.devmem' is enabled.
>
> Signed-off-by: Cédric Le Goater <clg at kaod.org>

Thanks Cédric. I've put this in the 4.18 tree.

Can you submit this upstream too please?

Cheers,

Joel

> ---
>  drivers/char/mem.c                              | 12 ++++++++++++
>  Documentation/admin-guide/kernel-parameters.txt |  3 +++
>  drivers/char/Kconfig                            |  9 +++++++++
>  3 files changed, 24 insertions(+)
>
> diff --git a/drivers/char/mem.c b/drivers/char/mem.c
> index df66a9dd0aae..8c021a559e6c 100644
> --- a/drivers/char/mem.c
> +++ b/drivers/char/mem.c
> @@ -10,6 +10,7 @@
>   */
>
>  #include <linux/mm.h>
> +#include <linux/moduleparam.h>
>  #include <linux/miscdevice.h>
>  #include <linux/slab.h>
>  #include <linux/vmalloc.h>
> @@ -36,6 +37,7 @@
>  # include <linux/efi.h>
>  #endif
>
> +#define DEVMEM_MINOR   1
>  #define DEVPORT_MINOR  4
>
>  static inline unsigned long size_inside_page(unsigned long start,
> @@ -912,6 +914,12 @@ static char *mem_devnode(struct device *dev, umode_t *mode)
>         return NULL;
>  }
>
> +#ifdef CONFIG_DEVMEM_BOOTPARAM
> +static bool devmem;
> +module_param(devmem, bool, 0444);
> +MODULE_PARM_DESC(devmem, "kernel parameter to activate /dev/mem");
> +#endif
> +
>  static struct class *mem_class;
>
>  static int __init chr_dev_init(void)
> @@ -930,6 +938,10 @@ static int __init chr_dev_init(void)
>                 if (!devlist[minor].name)
>                         continue;
>
> +#ifdef CONFIG_DEVMEM_BOOTPARAM
> +               if (minor == DEVMEM_MINOR && !devmem)
> +                       continue;
> +#endif
>                 /*
>                  * Create /dev/port?
>                  */
> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> index 1370b424a453..a8ed12d0d678 100644
> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -2402,6 +2402,9 @@
>                         deep    - Suspend-To-RAM or equivalent (if supported)
>                         See Documentation/admin-guide/pm/sleep-states.rst.
>
> +       mem.devmem=     Activate the /dev/mem device
> +                       Format: <bool>  (1/Y/y=enable, 0/N/n=disable)
> +
>         meye.*=         [HW] Set MotionEye Camera parameters
>                         See Documentation/media/v4l-drivers/meye.rst.
>
> diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
> index 212f447938ae..08c56148190b 100644
> --- a/drivers/char/Kconfig
> +++ b/drivers/char/Kconfig
> @@ -16,6 +16,15 @@ config DEVMEM
>           memory.
>           When in doubt, say "Y".
>
> +config DEVMEM_BOOTPARAM
> +       bool "mem.devmem boot parameter"
> +       depends on DEVMEM
> +       default n
> +       help
> +         This option adds a 'mem.devmem' kernel parameter which activates
> +         the /dev/mem device when enabled.
> +         When in doubt, say "N".
> +
>  config DEVKMEM
>         bool "/dev/kmem virtual device support"
>         # On arm64, VMALLOC_START < PAGE_OFFSET, which confuses kmem read/write
> --
> 2.17.1
>


More information about the openbmc mailing list