[PATCH] arm64: CONFIG_DEVPORT should not be used when PCI is being used

From: Al Stone
Date: Wed Apr 06 2016 - 17:27:37 EST


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 <jbastian@xxxxxxxxxx>), 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 <ahs3@xxxxxxxxxx>
Cc: Arnd Bergmann <arnd@xxxxxxxx>
Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
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