# # USB/ATM DSL configuration # menuconfig USB_ATM tristate "USB DSL modem support" depends on ATM select CRC32 default n help Say Y here if you want to connect a USB Digital Subscriber Line (DSL) modem to your computer's USB port. You will then need to choose your modem from the list below. To compile this driver as a module, choose M here: the module will be called usbatm. if USB_ATM config USB_SPEEDTOUCH tristate "Speedtouch USB support" select FW_LOADER help Say Y here if you have an SpeedTouch USB or SpeedTouch 330 modem. In order to use your modem you will need to install the two parts of the firmware, extracted by the user space tools; see for details. To compile this driver as a module, choose M here: the module will be called speedtch. config USB_CXACRU tristate "Conexant AccessRunner USB support" select FW_LOADER help Say Y here if you have an ADSL USB modem based on the Conexant AccessRunner chipset. In order to use your modem you will need to install the firmware, extracted by the user space tools; see for details. To compile this driver as a module, choose M here: the module will be called cxacru. config USB_UEAGLEATM tristate "ADI 930 and eagle USB DSL modem" select FW_LOADER help Say Y here if you have an ADSL USB modem based on the ADI 930 or eagle chipset. In order to use your modem you will need to install firmwares and CMV (Command Management Variables); see for details. To compile this driver as a module, choose M here: the module will be called ueagle-atm. config USB_XUSBATM tristate "Other USB DSL modem support" help Say Y here if you have a DSL USB modem not explicitly supported by another USB DSL drivers. In order to use your modem you will need to pass the vendor ID, product ID, and endpoint numbers for transmission and reception as module parameters. You may need to initialize the modem using a user space utility (a firmware loader for example). To compile this driver as a module, choose M here: the module will be called xusbatm. endif # USB_ATM ef542c5414e54bf1a'/>
diff options
context:
space:
mode:
authorIago Abal <mail@iagoabal.eu>2017-01-11 14:00:21 +0100
committerVinod Koul <vinod.koul@intel.com>2017-01-25 15:35:11 +0530
commit91539eb1fda2d530d3b268eef542c5414e54bf1a (patch)
tree960f5ca6342ad20837aff18aad6e8ecd7da32fd6 /fs/nfsd/xdr4cb.h
parent6610d0edf6dc7ee97e46ab3a538a565c79d26199 (diff)
dmaengine: pl330: fix double lock
The static bug finder EBA (http://www.iagoabal.eu/eba/) reported the following double-lock bug: Double lock: 1. spin_lock_irqsave(pch->lock, flags) at pl330_free_chan_resources:2236; 2. call to function `pl330_release_channel' immediately after; 3. call to function `dma_pl330_rqcb' in line 1753; 4. spin_lock_irqsave(pch->lock, flags) at dma_pl330_rqcb:1505. I have fixed it as suggested by Marek Szyprowski. First, I have replaced `pch->lock' with `pl330->lock' in functions `pl330_alloc_chan_resources' and `pl330_free_chan_resources'. This avoids the double-lock by acquiring a different lock than `dma_pl330_rqcb'. NOTE that, as a result, `pl330_free_chan_resources' executes `list_splice_tail_init' on `pch->work_list' under lock `pl330->lock', whereas in the rest of the code `pch->work_list' is protected by `pch->lock'. I don't know if this may cause race conditions. Similarly `pch->cyclic' is written by `pl330_alloc_chan_resources' under `pl330->lock' but read by `pl330_tx_submit' under `pch->lock'. Second, I have removed locking from `pl330_request_channel' and `pl330_release_channel' functions. Function `pl330_request_channel' is only called from `pl330_alloc_chan_resources', so the lock is already held. Function `pl330_release_channel' is called from `pl330_free_chan_resources', which already holds the lock, and from `pl330_del'. Function `pl330_del' is called in an error path of `pl330_probe' and at the end of `pl330_remove', but I assume that there cannot be concurrent accesses to the protected data at those points. Signed-off-by: Iago Abal <mail@iagoabal.eu> Reviewed-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'fs/nfsd/xdr4cb.h')