Commit e30155fd authored by Taehee Yoo's avatar Taehee Yoo Committed by David S. Miller
Browse files

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: 91ed81f9 ("gtp: support SGSN-side tunnels")
Signed-off-by: default avatarTaehee Yoo <ap420073@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a2bed907
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -857,9 +857,14 @@ 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;
	gtp->sk1u = sk1u;