summaryrefslogtreecommitdiff
path: root/drivers/usb/misc/diag_ipc_bridge.c (follow)
Commit message (Collapse)AuthorAge
* drivers: Remove references to PM_RUNTIMEDavide Garberi2022-07-27
| | | | | | * This doesn't exist anymore in 4.4 so change it with CONFIG_PM Signed-off-by: Davide Garberi <dade.garberi@gmail.com>
* usb: misc: Add support for 9902 and 9903 PIDsAjay Agarwal2019-02-21
| | | | | | | | | | | Add support for creation of misc device, diag and IPC traffic channels, when the connected device has 0x05C6 VID and 0x9902 or 0x9903 PID. 0x9902 : WLAN + QMI + DIAG + Sahara 0x9903 : BT ACL + BT SCO + WLAN + QMI + DIAG + Sahara Change-Id: I7fa081abbb8860ff4d4c802522d4eb77cf573a18 Signed-off-by: Ajay Agarwal <ajaya@codeaurora.org>
* usb: misc: diag_ipc_bridge: Move dev cleanup to delete functionAjay Agarwal2019-01-24
| | | | | | | | | | | | | | | | | | | | | | Currently the driver does the diag_briddge_dev's members' cleanup in disconnect function. This can lead to race between read/write and disconnect functions where the read/write mutex is being destroyed when it is in locked state. Also, the read/write function can be called after disconnect leading to mutex_lock warning on a destroyed mutex. Finally, since the close function can be called after disconnect, it can lead to null pointer dereference from dev->ifc since it is being assigned null in disconnect. Also, there can be a use-after-free if the interface structure is used after disconnect function has been called and core has freed the intf. Fix this by moving the dev member cleanup from disconnect to the delete function. This will ensure that mutex and dev->ifc exists when the diag core can still queue read/write and call close. Also do a get and put of interface from probe and delete respectively to prevent the use-after-free issue. Change-Id: I1a1fa4440560b0c0b77880fb3f5a37c3c24c7e67 Signed-off-by: Ajay Agarwal <ajaya@codeaurora.org>
* usb: misc: diag_ipc_bridge: Patch debug statementsAjay Agarwal2019-01-24
| | | | | | | | | Remove pr_fmt declaration and add function name and new line functionality to the debug prints instead. Add more debug logs where necessary. Change-Id: Iedf27473174eeae1c8032c133250a190978d38e5 Signed-off-by: Ajay Agarwal <ajaya@codeaurora.org>
* usb: diag_ipc_bridge: Fix kref_put handling in case of transfersAjay Agarwal2018-12-26
| | | | | | | | | | | | | | | | | | Currently the driver puts kref in the read/write completion callback irrespective of whether the transaction was successful or not. This is fine for diag transfers because the read/write function is not waiting for completion. But in case of IPC transfers, the read/write function waits for completion. If the transfer fails for some reason, then it will do a kref_put as well, along with the completion callback. This leads to double put of kref counter leading to null pointer dereference from diag_bridge_disconnect(on cable disconnect). Fix this by doing kref_put in the completion callback only if the URB is submitted successfully. Else do it from the error handling in read/write functions. Change-Id: I50645cac757293dd0b1df9afb356281b2922401b Signed-off-by: Ajay Agarwal <ajaya@codeaurora.org>
* usb: misc: diag_ipc_bridge: Add support for 0x901F PIDGustavo Solaira2018-12-07
| | | | | | | | Add support for creation of diag traffic channel in case the connected device has 0x05C6 VID and 0x901F PID. Change-Id: I460c0b1e54e88e336081b0ea87cc6342628ec516 Signed-off-by: Gustavo Solaira <gustavos@codeaurora.org>
* usb: misc: diag_ipc_bridge: Add support for 90F0 and 90EF PIDsGustavo Solaira2018-11-18
| | | | | | | | | Add support for creation of diag traffic channel in case the connected device has 0x05C6 VID and 0x90EF or 0x90F0 PIDs. Change-Id: I418e7267226b1b36385315499cde1dd25ca0c58e Signed-off-by: Gustavo Solaira <gustavos@codeaurora.org>
* usb: misc: diag_ipc_bridge: Add support for 901D PIDGustavo Solaira2018-07-16
| | | | | | | | | Add support for creation of diag traffic channel in case the connected device has 0x05C6 VID and 0x901D PID. 0x901D : DIAG + ADB Change-Id: I6df0aca714f10ea7d854f621e19da1388a7e7d5c Signed-off-by: Gustavo Solaira <gustavos@codeaurora.org>
* usb: misc: diag_ipc_bridge: Add support for QMI messages over BULKAjay Agarwal2018-06-20
| | | | | | | | Add support for routing QMI messages to and from connected device over BULK In and Out endpoints. Change-Id: I9d6d06252ff7e98a1e41206b8699990f4312fb01 Signed-off-by: Ajay Agarwal <ajaya@codeaurora.org>
* usb: misc: diag_ipc_bridge: Add support for 9900 and 9901 PIDsAjay Agarwal2018-06-20
| | | | | | | | | | Add support for creation of diag and IPC traffic channel in case the connected device has 0x05C6 VID and 0x9900 or 0x9901 PID. 0x9900 : WLAN + QMI + DIAG 0x9901 : BT ACL + BT SCO + WLAN + QMI + DIAG Change-Id: Iaa803d729516016a3b5043aa1cec78d12a408451 Signed-off-by: Ajay Agarwal <ajaya@codeaurora.org>
* usb: misc: Add snapshot of diag_bridge driverAjay Agarwal2018-06-20
Add diag_bridge driver which is used to communicate with the diag and QMI interfaces exposed by Qualcomm devices. This snapshot is taken as of msm-3.10 'commit d722f698a54e ("regulator: core: Fix buffer overflow issue")'. Also rename the diag_bridge driver to diag_ipc_bridge.c. Change-Id: Ide503c5bf729a7e41de98b12c89e4edc12af61fe Signed-off-by: Ajay Agarwal <ajaya@codeaurora.org>