The iskmemdev function checks for minor number 14 in addition to 0 and 1 on
the following archs:

amd64, arm64, i386, and riscv64

Device 2, 14 was traditionally /dev/io, which we don't support and so opening
it will always return ENXIO from mmopen anyway.

We only use iskmemdev in one place in the tree, to return EPERM when trying
to access /dev/kmem or /dev/mem when securelevel >= 1.

This patch removes the check for minor(dev) == 14 on the four above mentioned
architectures.

--- sys/arch/amd64/amd64/conf.c.dist    Mon Feb 20 18:17:44 2023
+++ sys/arch/amd64/amd64/conf.c Mon Feb 20 18:29:28 2023
@@ -313,7 +313,7 @@
 iskmemdev(dev_t dev)
 {
 
-       return (major(dev) == mem_no && (minor(dev) < 2 || minor(dev) == 14));
+       return (major(dev) == mem_no && minor(dev) < 2);
 }
 
 /*
--- sys/arch/arm64/arm64/conf.c.dist    Mon Feb 20 18:18:20 2023
+++ sys/arch/arm64/arm64/conf.c Mon Feb 20 18:29:14 2023
@@ -255,7 +255,7 @@
 iskmemdev(dev_t dev)
 {
 
-       return (major(dev) == CMAJ_MM && (minor(dev) < 2 || minor(dev) == 14));
+       return (major(dev) == CMAJ_MM && minor(dev) < 2);
 }
 
 /*
--- sys/arch/i386/i386/conf.c.dist      Mon Feb 20 18:18:35 2023
+++ sys/arch/i386/i386/conf.c   Mon Feb 20 18:28:51 2023
@@ -309,7 +309,7 @@
 int
 iskmemdev(dev_t dev)
 {
-       return (major(dev) == mem_no && (minor(dev) < 2 || minor(dev) == 14));
+       return (major(dev) == mem_no && minor(dev) < 2);
 }
 
 /*
--- sys/arch/riscv64/riscv64/conf.c.dist        Mon Feb 20 18:18:48 2023
+++ sys/arch/riscv64/riscv64/conf.c     Mon Feb 20 18:28:35 2023
@@ -253,7 +253,7 @@
 iskmemdev(dev_t dev)
 {
 
-       return (major(dev) == mem_no && (minor(dev) < 2 || minor(dev) == 14));
+       return (major(dev) == mem_no && minor(dev) < 2);
 }
 
 /*

Reply via email to