Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

comedi: pcl711: Add sanity checks for I/O base address

The "pcl711" driver uses an admin-supplied configuration option
(`it->options[0]`) to configure the I/O port base address of an
Advantech PCL-711 series board or an Adlink ACL-8112 series board. It
currently allows any base address to be configured but the hardware only
supports base addresses (configured by on-board DIP switches) in the
range 0 to 0x3F0 (for PCL-711) or 0x200 to 0x3F0 (for ACL-8112) on
16-byte boundaries.

Store the minimum supported I/O base address in the static board
information array elements, and add a sanity check to ensure the device
is not configured at an unsupported base address.

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

authored by

Ian Abbott and committed by
Greg Kroah-Hartman
7e33ddd6 2555cab1

+5 -1
+5 -1
drivers/comedi/drivers/pcl711.c
··· 112 112 int n_aichan; 113 113 int n_aochan; 114 114 int maxirq; 115 + unsigned int min_io_start; 115 116 const struct comedi_lrange *ai_range_type; 116 117 }; 117 118 ··· 133 132 .n_aichan = 16, 134 133 .n_aochan = 2, 135 134 .maxirq = 15, 135 + .min_io_start = 0x200, 136 136 .ai_range_type = &range_acl8112hg_ai, 137 137 }, { 138 138 .name = "acl8112dg", 139 139 .n_aichan = 16, 140 140 .n_aochan = 2, 141 141 .maxirq = 15, 142 + .min_io_start = 0x200, 142 143 .ai_range_type = &range_acl8112dg_ai, 143 144 }, 144 145 }; ··· 421 418 struct comedi_subdevice *s; 422 419 int ret; 423 420 424 - ret = comedi_request_region(dev, it->options[0], 0x10); 421 + ret = comedi_check_request_region(dev, it->options[0], 0x10, 422 + board->min_io_start, 0x3ff, 16); 425 423 if (ret) 426 424 return ret; 427 425