• Krzysztof Opasiak's avatar
    usb: gadget: loopback: Fix looping back logic implementation · 91c42b0d
    Krzysztof Opasiak authored
    Since commit e0857ce5
    ("usb: gadget: loopback: don't queue requests to bogus endpoints")
    
    Loopback function is not realy working as that commit removed
    all looping back logic. After that commit ep-out works like
    /dev/null and ep-in works like /dev/zero.
    
    This commit fix this issue by allocating set of out requests
    and set of in requests but each out req shares buffer with
    one in req:
    
    out_req->buf ---> buf <--- in_req.buf
    out_req->context <---> in_req.context
    
    The completion routine simply  enqueue the suitable req in
    an oposite direction.
    
    Cc: <stable@vger.kernel.org> # 3.18+
    Fixes: e0857ce5
    ("usb: gadget: loopback: don't queue requests to bogus endpoints")
    Signed-off-by: default avatarKrzysztof Opasiak <k.opasiak@samsung.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    91c42b0d
f_loopback.c 14.5 KB