lockdown: Lock down TIOCSSERIAL
Lock down TIOCSSERIAL as that can be used to change the ioport and irq settings on a serial port. This only appears to be an issue for the serial drivers that use the core serial code. All other drivers seem to either ignore attempts to change port/irq or give an error. Reported-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Matthew Garrett <mjg59@google.com> Reviewed-by: Kees Cook <keescook@chromium.org> cc: Jiri Slaby <jslaby@suse.com> Cc: linux-serial@vger.kernel.org Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
parent
3f19cad3fa
commit
794edf30ee
|
@ -22,6 +22,7 @@
|
||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
|
#include <linux/security.h>
|
||||||
|
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
|
@ -862,6 +863,10 @@ static int uart_set_info(struct tty_struct *tty, struct tty_port *port,
|
||||||
goto check_and_exit;
|
goto check_and_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
retval = security_locked_down(LOCKDOWN_TIOCSSERIAL);
|
||||||
|
if (retval && (change_irq || change_port))
|
||||||
|
goto exit;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ask the low level driver to verify the settings.
|
* Ask the low level driver to verify the settings.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -112,6 +112,7 @@ enum lockdown_reason {
|
||||||
LOCKDOWN_MSR,
|
LOCKDOWN_MSR,
|
||||||
LOCKDOWN_ACPI_TABLES,
|
LOCKDOWN_ACPI_TABLES,
|
||||||
LOCKDOWN_PCMCIA_CIS,
|
LOCKDOWN_PCMCIA_CIS,
|
||||||
|
LOCKDOWN_TIOCSSERIAL,
|
||||||
LOCKDOWN_INTEGRITY_MAX,
|
LOCKDOWN_INTEGRITY_MAX,
|
||||||
LOCKDOWN_CONFIDENTIALITY_MAX,
|
LOCKDOWN_CONFIDENTIALITY_MAX,
|
||||||
};
|
};
|
||||||
|
|
|
@ -27,6 +27,7 @@ static char *lockdown_reasons[LOCKDOWN_CONFIDENTIALITY_MAX+1] = {
|
||||||
[LOCKDOWN_MSR] = "raw MSR access",
|
[LOCKDOWN_MSR] = "raw MSR access",
|
||||||
[LOCKDOWN_ACPI_TABLES] = "modifying ACPI tables",
|
[LOCKDOWN_ACPI_TABLES] = "modifying ACPI tables",
|
||||||
[LOCKDOWN_PCMCIA_CIS] = "direct PCMCIA CIS storage",
|
[LOCKDOWN_PCMCIA_CIS] = "direct PCMCIA CIS storage",
|
||||||
|
[LOCKDOWN_TIOCSSERIAL] = "reconfiguration of serial port IO",
|
||||||
[LOCKDOWN_INTEGRITY_MAX] = "integrity",
|
[LOCKDOWN_INTEGRITY_MAX] = "integrity",
|
||||||
[LOCKDOWN_CONFIDENTIALITY_MAX] = "confidentiality",
|
[LOCKDOWN_CONFIDENTIALITY_MAX] = "confidentiality",
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue