mirror of https://gitee.com/openkylin/linux.git
[XFRM]: Fix existence lookup in xfrm_state_find
Use 'daddr' instead of &tmpl->id.daddr, since the latter might be zero. Also, only perform the lookup when tmpl->id.spi is non-zero. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7938109fff
commit
5c5d281a93
|
@ -357,8 +357,9 @@ xfrm_state_find(xfrm_address_t *daddr, xfrm_address_t *saddr,
|
||||||
|
|
||||||
x = best;
|
x = best;
|
||||||
if (!x && !error && !acquire_in_progress) {
|
if (!x && !error && !acquire_in_progress) {
|
||||||
x0 = afinfo->state_lookup(&tmpl->id.daddr, tmpl->id.spi, tmpl->id.proto);
|
if (tmpl->id.spi &&
|
||||||
if (x0 != NULL) {
|
(x0 = afinfo->state_lookup(daddr, tmpl->id.spi,
|
||||||
|
tmpl->id.proto)) != NULL) {
|
||||||
xfrm_state_put(x0);
|
xfrm_state_put(x0);
|
||||||
error = -EEXIST;
|
error = -EEXIST;
|
||||||
goto out;
|
goto out;
|
||||||
|
|
Loading…
Reference in New Issue