]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
comedi: das16m1: Add sanity checks for I/O base address
authorIan Abbott <abbotti@mev.co.uk>
Fri, 30 Jan 2026 16:47:39 +0000 (16:47 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 2 Apr 2026 13:49:37 +0000 (15:49 +0200)
The "das16m1" driver uses an admin-supplied configuration option
(`it->options[0]`) to configure the I/O port base address of a DAS16/M1
board.  It currently allows any base address to be configured but the
hardware only supports base addresses (configured by an on-board DIP
switch) in the range 0 to 0x3f0 on 16-byte boundaries.  It has an
additional span of 0x8 registers at offset 0x400 from the main 0x10 byte
region.

Add a sanity check to ensure the device is not configured at an
unsupported base address.  If the main base address is correctly aligned
and within range, then the additional region at offset 0x400 from the
configured base address will naturally be within range and correctly
aligned.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Link: https://patch.msgid.link/20260130170416.49994-15-abbotti@mev.co.uk
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/comedi/drivers/das16m1.c

index 1b638f5b5a4fb9d17f82d5568bd7df84b88a7f4f..9f531ba593b4cf42a4b35af005f3539d1415fed5 100644 (file)
@@ -511,7 +511,8 @@ static int das16m1_attach(struct comedi_device *dev,
        if (!devpriv)
                return -ENOMEM;
 
-       ret = comedi_request_region(dev, it->options[0], 0x10);
+       ret = comedi_check_request_region(dev, it->options[0], 0x10,
+                                         0, 0x3ff, 16);
        if (ret)
                return ret;
        /* Request an additional region for the 8255 and 3rd 8254 */