• Rakesh Pillai's avatar
    ath10k: fix memory leak in rx ring buffer allocation · d49ea1b6
    Rakesh Pillai authored
    commit f35a7f91 upstream.
    
    The rx ring buffers are added to a hash table if
    firmware support full rx reorder. If the full rx
    reorder support flag is not set before allocating
    the rx ring buffers, none of the buffers are added
    to the hash table.
    
    There is a race condition between rx ring refill and
    rx buffer replenish from napi poll. The interrupts are
    enabled in hif start, before the rx ring is refilled during init.
    We replenish buffers from napi poll due to the interrupts which
    get enabled after hif start. Hence before the entire rx ring is
    refilled during the init, the napi poll replenishes a few buffers
    in steps of 100 buffers per attempt. During this rx ring replenish
    from napi poll, the rx reorder flag has not been set due to which
    the replenished buffers are not added to the hash table
    
    Set the rx full reorder support flag before we allocate
    the rx ring buffer to avoid the memory leak.
    Signed-off-by: default avatarRakesh Pillai <pillair@qti.qualcomm.com>
    Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
    Cc: Christian Lamparter <chunkeey@googlemail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d49ea1b6
core.c 64.1 KB