On arm64 systems, using /dev/port does not really make sense; this is
historically used for other architectures to access ISA IO ports, which
with any luck do not exist on arm64 platforms.  With the following snippet
of perl code (from Jeff Bastian <jbast...@redhat.com>), we can reliably
panic an arm64 system with PCI enabled:

        #!/usr/bin/perl -w
        # extracted from sensors-detect from lm_sensors
        # to reproduce kernel crash when probing the
        # Super-I/O ports
        use Fcntl qw(:DEFAULT :seek);
        sysopen(IOPORTS, "/dev/port", O_RDWR);
        binmode(IOPORTS);
        sysseek(IOPORTS, 0x2e, 0);
        syswrite(IOPORTS, pack("C", 0x0d), 1);

So, make sure CONFIG_DEVPORT cannot be set on arm64; it cannot really be
used and it allows us to crash a kernel from user space.

Signed-off-by: Al Stone <a...@redhat.com>
Cc: Arnd Bergmann <a...@arndb.de>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
 drivers/char/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
index b272397..c532f62 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -587,7 +587,7 @@ config TELCLOCK
 
 config DEVPORT
        bool
-       depends on !M68K
+       depends on !M68K && !ARM64
        depends on ISA || PCI
        default y
 
-- 
1.8.3.1

Reply via email to