lkml.org 
[lkml]   [2019]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 099/293] gtp: add missing gtp_encap_disable_sock() in gtp_encap_enable()
    Date
    [ Upstream commit e30155fd23c9c141cbe7d99b786e10a83a328837 ]

    If an invalid role is sent from user space, gtp_encap_enable() will fail.
    Then, it should call gtp_encap_disable_sock() but current code doesn't.
    It makes memory leak.

    Fixes: 91ed81f9abc7 ("gtp: support SGSN-side tunnels")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/gtp.c | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c
    index f38e32a7ec9c..dba3869b61be 100644
    --- a/drivers/net/gtp.c
    +++ b/drivers/net/gtp.c
    @@ -845,8 +845,13 @@ static int gtp_encap_enable(struct gtp_dev *gtp, struct nlattr *data[])

    if (data[IFLA_GTP_ROLE]) {
    role = nla_get_u32(data[IFLA_GTP_ROLE]);
    - if (role > GTP_ROLE_SGSN)
    + if (role > GTP_ROLE_SGSN) {
    + if (sk0)
    + gtp_encap_disable_sock(sk0);
    + if (sk1u)
    + gtp_encap_disable_sock(sk1u);
    return -EINVAL;
    + }
    }

    gtp->sk0 = sk0;
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-07-29 22:40    [W:4.027 / U:0.288 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site