mirror-linux/drivers/comedi/drivers
Ian Abbott e03b29b55f comedi: dmm32at: serialize use of paged registers
Some of the hardware registers of the DMM-32-AT board are multiplexed,
using the least significant two bits of the Miscellaneous Control
register to select the function of registers at offsets 12 to 15:

 00 => 8254 timer/counter registers are accessible
 01 => 8255 digital I/O registers are accessible
 10 => Reserved
 11 => Calibration registers are accessible

The interrupt service routine (`dmm32at_isr()`) clobbers the bottom two
bits of the register with value 00, which would interfere with access to
the 8255 registers by the `dm32at_8255_io()` function (used for Comedi
instruction handling on the digital I/O subdevice).

Make use of the generic Comedi device spin-lock `dev->spinlock` (which
is otherwise unused by this driver) to serialize access to the
miscellaneous control register and paged registers.

Fixes: 3c501880ac ("Staging: comedi: add dmm32at driver")
Cc: stable@vger.kernel.org
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Link: https://patch.msgid.link/20260112162835.91688-1-abbotti@mev.co.uk
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2026-01-16 16:43:51 +01:00
..
ni_routing comedi: ni_routing: tools: Check when the file could not be opened 2024-09-11 16:03:28 +02:00
tests
8255.c comedi: 8255: Fail to attach if fail to request I/O port region 2025-11-26 14:20:20 +01:00
8255_pci.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
Makefile comedi: Add new driver for ADLink PCI-7250 series 2025-09-06 16:03:25 +02:00
addi_apci_3xxx.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
addi_apci_16xx.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
addi_apci_1032.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
addi_apci_1500.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
addi_apci_1516.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
addi_apci_1564.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
addi_apci_2032.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
addi_apci_2200.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
addi_apci_3120.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
addi_apci_3501.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
addi_tcw.h
addi_watchdog.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
addi_watchdog.h
adl_pci7x3x.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
adl_pci6208.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
adl_pci7250.c comedi: Add new driver for ADLink PCI-7250 series 2025-09-06 16:03:25 +02:00
adl_pci8164.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
adl_pci9111.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
adl_pci9118.c comedi: drivers: adl_pci9118.c: Edit file so that checkpatch.pl has 0 typo errors 2025-05-08 20:24:14 +02:00
adq12b.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
adv_pci1710.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
adv_pci1720.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
adv_pci1723.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
adv_pci1724.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
adv_pci1760.c comedi: adv_pci1760: Fix PWM instruction handling 2023-01-19 17:24:47 +01:00
adv_pci_dio.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
aio_aio12_8.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
aio_iiro_16.c comedi: aio_iiro_16: Fix bit shift out of bounds 2025-07-16 15:02:44 +02:00
amcc_s5933.h
amplc_dio200.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
amplc_dio200.h
amplc_dio200_common.c comedi: amplc_dio200_common: Conditionally remove I/O port support 2023-10-05 13:34:04 +02:00
amplc_dio200_pci.c comedi: amplc_dio200_pci: Conditionally remove devices that use port I/O 2023-10-05 13:34:04 +02:00
amplc_pc236.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
amplc_pc236.h
amplc_pc236_common.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
amplc_pc263.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
amplc_pci224.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
amplc_pci230.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
amplc_pci236.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
amplc_pci263.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
c6xdigio.c comedi: c6xdigio: Fix invalid PNP driver unregistration 2025-11-26 13:57:16 +01:00
cb_das16_cs.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
cb_pcidas.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
cb_pcidas64.c comedi: remove unused helper function dma_chain_flag_bits 2024-04-11 15:12:07 +02:00
cb_pcidda.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
cb_pcimdas.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
cb_pcimdda.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
comedi_8254.c comedi: comedi_8254: Conditionally remove I/O port support 2023-10-05 13:34:04 +02:00
comedi_8255.c comedi: comedi_8255: Correct error in subdevice initialization 2024-03-05 14:21:42 +00:00
comedi_bond.c comedi: comedi_bond: Check for loops when bonding devices 2025-11-26 14:20:10 +01:00
comedi_isadma.c PCI: Move isa_dma_bridge_buggy out of asm/dma.h 2022-07-22 17:24:47 -05:00
comedi_parport.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
comedi_test.c comedi: comedi_test: Fix possible deletion of uninitialized timers 2025-07-16 15:02:44 +02:00
contec_pci_dio.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
dac02.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
daqboard2000.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
das08.c comedi: remove redundant assignment to variable range 2024-02-18 19:17:11 +01:00
das08.h
das08_cs.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
das08_isa.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
das08_pci.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
das16.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
das16m1.c comedi: das16m1: Fix bit shift out of bounds 2025-07-16 15:02:26 +02:00
das800.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
das1800.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
das6402.c comedi: das6402: Fix bit shift out of bounds 2025-07-16 15:02:44 +02:00
dmm32at.c comedi: dmm32at: serialize use of paged registers 2026-01-16 16:43:51 +01:00
dt282x.c comedi: Move "comedi_isadma.h" to <linux/comedi/comedi_isadma.h> 2021-11-26 16:48:59 +01:00
dt2801.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
dt2811.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
dt2814.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
dt2815.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
dt2817.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
dt3000.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
dt9812.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
dyna_pci10xx.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
fl512.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
gsc_hpdi.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
icp_multi.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
ii_pci20kc.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
jr3_pci.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
jr3_pci.h
ke_counter.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
me4000.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
me_daq.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
mf6x4.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
mite.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
mite.h
mpc624.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
multiq3.c comedi: multiq3: sanitize config options in multiq3_attach() 2025-11-26 14:19:00 +01:00
ni_65xx.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
ni_660x.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
ni_670x.c comedi: Adjust range_table_list allocation type 2025-11-24 12:43:28 -08:00
ni_6527.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
ni_at_a2150.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
ni_at_ao.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
ni_atmio.c comedi: ni_atmio: avoid warning for unused device_ids[] table 2025-04-17 10:56:11 +02:00
ni_atmio16d.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
ni_daq_700.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
ni_daq_dio24.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
ni_labpc.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
ni_labpc.h
ni_labpc_common.c comedi: ni_labpc_common: Conditionally remove I/O port support 2023-10-05 13:34:04 +02:00
ni_labpc_cs.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
ni_labpc_isadma.c comedi: Move "comedi_isadma.h" to <linux/comedi/comedi_isadma.h> 2021-11-26 16:48:59 +01:00
ni_labpc_isadma.h
ni_labpc_pci.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
ni_labpc_regs.h
ni_mio_common.c comedi: ni_*: do not declare unused variable range_ni_E_ao_ext 2024-07-31 13:11:43 +02:00
ni_mio_cs.c comedi: Move and rename "8255.h" to <linux/comedi/comedi_8255.h> 2021-11-26 16:48:59 +01:00
ni_pcidio.c comedi: ni_pcidio: Do not bother filling buffer with 0xaa byte values 2025-04-25 15:53:18 +02:00
ni_pcimio.c comedi: ni_*: do not declare unused variable range_ni_E_ao_ext 2024-07-31 13:11:43 +02:00
ni_routes.c comedi: drivers: ni_routes: Use strcmp() instead of memcmp() 2022-02-25 12:08:52 +01:00
ni_routes.h comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
ni_stc.h comedi: ni_*: do not declare unused variable range_ni_E_ao_ext 2024-07-31 13:11:43 +02:00
ni_tio.c comedi: drivers: ni_tio: Fix slightly broken kernel-doc and demote others 2021-05-21 14:38:44 +02:00
ni_tio.h comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
ni_tio_internal.h
ni_tiocmd.c
ni_usb6501.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
pcl711.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
pcl724.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
pcl726.c comedi: pcl726: Prevent invalid irq number 2025-08-19 12:56:16 +02:00
pcl730.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
pcl812.c comedi: pcl812: Fix bit shift out of bounds 2025-07-16 15:02:44 +02:00
pcl816.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
pcl818.c comedi: pcl818: fix null-ptr-deref in pcl818_ai_cancel() 2025-11-26 14:19:15 +01:00
pcm3724.c comedi: comedi_8255: Rework subdevice initialization functions 2023-10-05 13:34:04 +02:00
pcmad.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
pcmda12.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
pcmmio.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
pcmuio.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
plx9052.h
plx9080.h
quatech_daqp_cs.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
rtd520.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
rti800.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
rti802.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
s526.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
s626.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
s626.h
ssv_dnp.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
usbdux.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
usbduxfast.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
usbduxsigma.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
vmk80xx.c comedi: vmk80xx: fix incomplete endpoint checking 2024-04-11 15:16:23 +02:00
z8536.h