Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e47c264 authored by Yasuyuki Kozakai's avatar Yasuyuki Kozakai Committed by David S. Miller
Browse files

[NETFILTER]: conntrack: fix refcount leak when finding expectation



All users of __{ip,nf}_conntrack_expect_find() don't expect that
it increments the reference count of expectation.

Signed-off-by: default avatarYasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c537b75a
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -225,11 +225,9 @@ __ip_conntrack_expect_find(const struct ip_conntrack_tuple *tuple)
	struct ip_conntrack_expect *i;
	
	list_for_each_entry(i, &ip_conntrack_expect_list, list) {
		if (ip_ct_tuple_mask_cmp(tuple, &i->tuple, &i->mask)) {
			atomic_inc(&i->use);
		if (ip_ct_tuple_mask_cmp(tuple, &i->tuple, &i->mask))
			return i;
	}
	}
	return NULL;
}

@@ -241,6 +239,8 @@ ip_conntrack_expect_find(const struct ip_conntrack_tuple *tuple)
	
	read_lock_bh(&ip_conntrack_lock);
	i = __ip_conntrack_expect_find(tuple);
	if (i)
		atomic_inc(&i->use);
	read_unlock_bh(&ip_conntrack_lock);

	return i;
+3 −3
Original line number Diff line number Diff line
@@ -469,11 +469,9 @@ __nf_conntrack_expect_find(const struct nf_conntrack_tuple *tuple)
	struct nf_conntrack_expect *i;
	
	list_for_each_entry(i, &nf_conntrack_expect_list, list) {
		if (nf_ct_tuple_mask_cmp(tuple, &i->tuple, &i->mask)) {
			atomic_inc(&i->use);
		if (nf_ct_tuple_mask_cmp(tuple, &i->tuple, &i->mask))
			return i;
	}
	}
	return NULL;
}

@@ -485,6 +483,8 @@ nf_conntrack_expect_find(const struct nf_conntrack_tuple *tuple)
	
	read_lock_bh(&nf_conntrack_lock);
	i = __nf_conntrack_expect_find(tuple);
	if (i)
		atomic_inc(&i->use);
	read_unlock_bh(&nf_conntrack_lock);

	return i;