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

Commit 7b4dc360 authored by Masahide NAKAMURA's avatar Masahide NAKAMURA Committed by David S. Miller
Browse files

[XFRM]: Do not add a state whose SPI is zero to the SPI hash.



SPI=0 is used for acquired IPsec SA and MIPv6 RO state.
Such state should not be added to the SPI hash
because we do not care about it on deleting path.

Signed-off-by: default avatarMasahide NAKAMURA <nakam@linux-ipv6.org>
Signed-off-by: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
parent 7fa6b066
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -96,11 +96,14 @@ static void xfrm_hash_transfer(struct hlist_head *list,
				    nhashmask);
		hlist_add_head(&x->bysrc, nsrctable+h);

		h = __xfrm_spi_hash(&x->id.daddr, x->id.spi, x->id.proto,
				    x->props.family, nhashmask);
		if (x->id.spi) {
			h = __xfrm_spi_hash(&x->id.daddr, x->id.spi,
					    x->id.proto, x->props.family,
					    nhashmask);
			hlist_add_head(&x->byspi, nspitable+h);
		}
	}
}

static unsigned long xfrm_hash_new_size(void)
{
@@ -622,7 +625,7 @@ static void __xfrm_state_insert(struct xfrm_state *x)
	h = xfrm_src_hash(&x->props.saddr, x->props.family);
	hlist_add_head(&x->bysrc, xfrm_state_bysrc+h);

	if (xfrm_id_proto_match(x->id.proto, IPSEC_PROTO_ANY)) {
	if (x->id.spi) {
		h = xfrm_spi_hash(&x->id.daddr, x->id.spi, x->id.proto,
				  x->props.family);