gtp: add missing gtp_encap_disable_sock() in gtp_encap_enable()
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: 91ed81f9ab
("gtp: support SGSN-side tunnels")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a2bed90704
commit
e30155fd23
|
@ -857,8 +857,13 @@ static int gtp_encap_enable(struct gtp_dev *gtp, struct nlattr *data[])
|
||||||
|
|
||||||
if (data[IFLA_GTP_ROLE]) {
|
if (data[IFLA_GTP_ROLE]) {
|
||||||
role = nla_get_u32(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;
|
return -EINVAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gtp->sk0 = sk0;
|
gtp->sk0 = sk0;
|
||||||
|
|
Loading…
Reference in New Issue