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)
commit9d38e3f9c65742d14f4716a61e9547c137a968c1
tree63901105bb29d758964f83572ed69cb190d0713b
parent923969356cba793da9b8b936a055404e8660c500
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