The COMEDI_DEVCONFIG ioctl can be used to configure I/O addresses and other hardware settings for non plug-and-play devices such as ISA cards. This should be disabled to preserve the kernel's integrity when it is locked down. Signed-off-by: Ben Hutchings Cc: Matthew Garrett Cc: David Howells Cc: Ian Abbott Cc: H Hartley Sweeten --- drivers/staging/comedi/comedi_fops.c | 6 ++++++ include/linux/security.h | 1 + security/lockdown/lockdown.c | 1 + 3 files changed, 8 insertions(+) diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c index f6d1287c7b83..fdf030e53035 100644 --- a/drivers/staging/comedi/comedi_fops.c +++ b/drivers/staging/comedi/comedi_fops.c @@ -27,6 +27,7 @@ #include #include +#include #include "comedi_internal.h" @@ -813,11 +814,16 @@ static int do_devconfig_ioctl(struct comedi_device *dev, struct comedi_devconfig __user *arg) { struct comedi_devconfig it; + int ret; lockdep_assert_held(&dev->mutex); if (!capable(CAP_SYS_ADMIN)) return -EPERM; + ret = security_locked_down(LOCKDOWN_COMEDI_DEVCONFIG); + if (ret) + return ret; + if (!arg) { if (is_device_busy(dev)) return -EBUSY; diff --git a/include/linux/security.h b/include/linux/security.h index 429f9f03372b..b16365dccfc5 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -113,6 +113,7 @@ enum lockdown_reason { LOCKDOWN_ACPI_TABLES, LOCKDOWN_PCMCIA_CIS, LOCKDOWN_TIOCSSERIAL, + LOCKDOWN_COMEDI_DEVCONFIG, LOCKDOWN_MODULE_PARAMETERS, LOCKDOWN_MMIOTRACE, LOCKDOWN_DEBUGFS, diff --git a/security/lockdown/lockdown.c b/security/lockdown/lockdown.c index 0068cec77c05..971bb99b9051 100644 --- a/security/lockdown/lockdown.c +++ b/security/lockdown/lockdown.c @@ -28,6 +28,7 @@ static char *lockdown_reasons[LOCKDOWN_CONFIDENTIALITY_MAX+1] = { [LOCKDOWN_ACPI_TABLES] = "modifying ACPI tables", [LOCKDOWN_PCMCIA_CIS] = "direct PCMCIA CIS storage", [LOCKDOWN_TIOCSSERIAL] = "reconfiguration of serial port IO", + [LOCKDOWN_COMEDI_DEVCONFIG] = "reconfiguration of Comedi legacy device", [LOCKDOWN_MODULE_PARAMETERS] = "unsafe module parameters", [LOCKDOWN_MMIOTRACE] = "unsafe mmio", [LOCKDOWN_DEBUGFS] = "debugfs access",