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)
committerxiest1 <xiest1@lenovo.com>
Tue, 5 Nov 2019 09:30:44 +0000 (17:30 +0800)
commit01558ce13d3fae543cb909e4f92d78110c8c2e3b
tree63901105bb29d758964f83572ed69cb190d0713b
parent03c8a1c618c733e210862cdf6da19a39f5212c1f
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