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;
|
||||
if (!x && !error && !acquire_in_progress) {
|
||||
x0 = afinfo->state_lookup(&tmpl->id.daddr, tmpl->id.spi, tmpl->id.proto);
|
||||
if (x0 != NULL) {
|
||||
if (tmpl->id.spi &&
|
||||
(x0 = afinfo->state_lookup(daddr, tmpl->id.spi,
|
||||
tmpl->id.proto)) != NULL) {
|
||||
xfrm_state_put(x0);
|
||||
error = -EEXIST;
|
||||
goto out;
|
||||
|
|
Loading…
Reference in New Issue