[d-kernel] [PATCH 1/6] mtd: phram, slram: Disable when the kernel is locked down
Vitaly Chikunov
vt на altlinux.org
Сб Май 9 02:43:27 MSK 2026
On Wed, May 06, 2026 at 08:37:17PM +0300, Egor Ignatov wrote:
> From: Ben Hutchings <ben at decadent.org.uk>
>
> These drivers allow mapping arbitrary memory ranges as MTD devices.
> This should be disabled to preserve the kernel's integrity when it is
> locked down.
>
> * Add the HWPARAM flag to the module parameters
> * When slram is built-in, it uses __setup() to read kernel parameters,
> so add an explicit check security_locked_down() check
>
> Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
> Cc: Matthew Garrett <mjg59 at google.com>
> Cc: David Howells <dhowells at redhat.com>
> Cc: Joern Engel <joern at lazybastard.org>
> Cc: linux-mtd at lists.infradead.org
> [egori: imported from Debian linux package, patch
> lockdown/mtd-disable-slram-and-phram-when-locked-down.patch]
> Signed-off-by: Egor Ignatov <egori at altlinux.org>
Этот патч отсылался в апстрим ревьювился, ACKался но в итоге его так и не приняли
по неуказанной причине.
https://lore.kernel.org/all/20190830154720.eekfjt6c4jzvlbfz@decadent.org.uk/
> ---
> drivers/mtd/devices/phram.c | 6 +++++-
> drivers/mtd/devices/slram.c | 9 ++++++++-
> 2 files changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mtd/devices/phram.c b/drivers/mtd/devices/phram.c
> index b42cadcd76..42ccabf24d 100644
> --- a/drivers/mtd/devices/phram.c
> +++ b/drivers/mtd/devices/phram.c
> @@ -365,7 +365,11 @@ static int phram_param_call(const char *val, const struct kernel_param *kp)
> #endif
> }
>
> -module_param_call(phram, phram_param_call, NULL, NULL, 0200);
> +static const struct kernel_param_ops phram_param_ops = {
> + .set = phram_param_call
> +};
> +__module_param_call(MODULE_PARAM_PREFIX, phram, &phram_param_ops, NULL,
> + 0200, -1, KERNEL_PARAM_FL_HWPARAM | hwparam_iomem);
1. Тут ошибка, должно быть `| hwparam_iomem & 0`, так как этот атрибут
только документирующий, а без `& 0` он начинает ошибочно устанавливать
лишний флаг (KERNEL_PARAM_FL_UNSAFE).
2. В Fedora этого патча нет.
3. В SUSE этого патча нет.
4. В апстриме есть коммит b3c782868eceb ("mtd: phram: Add the kernel
lock down check"), делающий изменения в phram.c не нужными. Но он не
затрагивает slram.c, но может быть это и не нужно.
Таким образом этот патч - наполовину хлам.
5. В Fedora эти модули не собираются
redhat/kernel-ark | redhat/configs/common/generic/CONFIG_MTD_PHRAM:# CONFIG_MTD_PHRAM is not set
redhat/kernel-ark | redhat/configs/common/generic/CONFIG_MTD_SLRAM:# CONFIG_MTD_SLRAM is not set
Возможно, поэтому этого патча и нет в Fedora.
От патча нужна только част относящаяся к slram.c:init_slram
> MODULE_PARM_DESC(phram, "Memory region to map. \"phram=<name>,<start>,<length>[,<erasesize>]\"");
>
> #ifdef CONFIG_OF
> diff --git a/drivers/mtd/devices/slram.c b/drivers/mtd/devices/slram.c
> index 69cb63d99f..1330b47af0 100644
> --- a/drivers/mtd/devices/slram.c
> +++ b/drivers/mtd/devices/slram.c
> @@ -43,6 +43,7 @@
> #include <linux/ioctl.h>
> #include <linux/init.h>
> #include <linux/io.h>
> +#include <linux/security.h>
>
> #include <linux/mtd/mtd.h>
>
> @@ -65,7 +66,7 @@ typedef struct slram_mtd_list {
> #ifdef MODULE
> static char *map[SLRAM_MAX_DEVICES_PARAMS];
>
> -module_param_array(map, charp, NULL, 0);
> +module_param_hw_array(map, charp, iomem, NULL, 0);
> MODULE_PARM_DESC(map, "List of memory regions to map. \"map=<name>, <start>, <length / end>\"");
> #else
> static char *map;
> @@ -281,11 +282,17 @@ static int __init init_slram(void)
> #ifndef MODULE
> char *devstart;
> char *devlength;
> + int ret;
>
> if (!map) {
> E("slram: not enough parameters.\n");
> return(-EINVAL);
> }
> +
> + ret = security_locked_down(LOCKDOWN_MODULE_PARAMETERS);
Должно быть LOCKDOWN_DEV_MEM, по аналогии с b3c782868eceb.
> + if (ret)
> + return ret;
> +
> while (map) {
> devname = devstart = devlength = NULL;
>
> --
> 2.50.1
>
> _______________________________________________
> devel-kernel mailing list
> devel-kernel at lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel-kernel
Подробная информация о списке рассылки devel-kernel