• Xiyu Yang's avatar
    net/tls: Fix sk_psock refcnt leak in bpf_exec_tx_verdict() · 095f5614
    Xiyu Yang authored
    bpf_exec_tx_verdict() invokes sk_psock_get(), which returns a reference
    of the specified sk_psock object to "psock" with increased refcnt.
    
    When bpf_exec_tx_verdict() returns, local variable "psock" becomes
    invalid, so the refcount should be decreased to keep refcount balanced.
    
    The reference counting issue happens in one exception handling path of
    bpf_exec_tx_verdict(). When "policy" equals to NULL but "psock" is not
    NULL, the function forgets to decrease the refcnt increased by
    sk_psock_get(), causing a refcnt leak.
    
    Fix this issue by calling sk_psock_put() on this error path before
    bpf_exec_tx_verdict() returns.
    Signed-off-by: default avatarXiyu Yang <xiyuyang19@fudan.edu.cn>
    Signed-off-by: default avatarXin Tan <tanxin.ctf@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    095f5614
tls_sw.c 61.4 KB