f_fs.c:Pick up QCOM fixes for adb stability issue
authora17671 <a17671@motorola.com>
Sun, 3 Feb 2019 06:25:20 +0000 (14:25 +0800)
committerlingsen1 <lingsen1@lenovo.com>
Sun, 7 Feb 2021 09:36:56 +0000 (17:36 +0800)
commit3f3fc5be3d5e1ba0d6b1aff5d4e571e59d06c94f
tree655486b1fdb00c6f9af51e47427f080855db1484
parent5fff5c0fdb7d4dd807e34ea01ca015f646fb0563
f_fs.c:Pick up QCOM fixes for adb stability issue

USB: gagget: f_fs: Return error if TX req is queued during device offline

    when USB cable is disconnected during TX data transfers, endpoints will
    be disabled during function disable. If userspace client tries to queue
    requests on disabled endpoints, driver will wait till endpoints are
    enabled and then queues previous session requests. This results in kernel
    driver and userspace driver out of sync and due to this, stall will be
    seen. Hence fix this issue by returning error value if client tries to
    queue requests on TX endpoint during device offline.

    CRs-Fixed: 633497
    Change-Id: I3e43b8a704367aff7fe8dd88159315aef811c51c
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
USB: f_fs: Check error status before doing epfile I/O

    Set error status before disabling endpoint during function
    disable and also check error status before handling I/O. If error
    status is set, return error status to read/write calls made by
    userspace. Also set file's private data to NULL during epfile
    release.

    CRs-Fixed: 671880
    Change-Id: I14b5ee541dfc18a7802ef4a8033878a7729d9adb
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
USB: f_fs: Add memory barrier before atomic operations

    In few instances, it is observed that multiple adbd instances are
    running on device causing condition BUG_ON(ffs->gadget) to be true.
    ffs->opened and ffs->ref atomic variables are used here to make
    decision for checking ffs->gadget. These atomic variable operations
    requires expilict memory barrier to make sure that update to
    ffs->gadget is visible to other CPUs before updated atomic variable
    based value is seen. This change also adds explicit memory barriers
    before reading or modified any atomic varaiables.

    CRs-Fixed: 793733
    Change-Id: I3c846eb6bbb53663892e05d51ebac8439aac957a
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
Change-Id: I48389d8d922e30aeb1215207ba138e36799df250
Signed-off-by: a17671 <a17671@motorola.com>
Reviewed-on: https://gerrit.mot.com/1304658
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Xiangpo Zhao <zhaoxp3@motorola.com>
Submit-Approved: Jira Key
drivers/usb/gadget/function/f_fs.c