]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/xfrm/xfrm_policy.c
xfrm: do not leak ESRCH to user space
[linux-2.6-omap-h63xx.git] / net / xfrm / xfrm_policy.c
index b7ec08025ffb84903b96e9f0764d3a0b9336ee5b..25872747762ca76b7ccd889d72549db0f6a694a3 100644 (file)
@@ -1251,6 +1251,8 @@ xfrm_tmpl_resolve_one(struct xfrm_policy *policy, struct flowi *fl,
                                 -EINVAL : -EAGAIN);
                        xfrm_state_put(x);
                }
+               else if (error == -ESRCH)
+                       error = -EAGAIN;
 
                if (!tmpl->optional)
                        goto fail;
@@ -2679,7 +2681,8 @@ static int xfrm_migrate_check(struct xfrm_migrate *m, int num_migrate)
 }
 
 int xfrm_migrate(struct xfrm_selector *sel, u8 dir, u8 type,
-                struct xfrm_migrate *m, int num_migrate)
+                struct xfrm_migrate *m, int num_migrate,
+                struct xfrm_kmaddress *k)
 {
        int i, err, nx_cur = 0, nx_new = 0;
        struct xfrm_policy *pol = NULL;
@@ -2723,7 +2726,7 @@ int xfrm_migrate(struct xfrm_selector *sel, u8 dir, u8 type,
        }
 
        /* Stage 5 - announce */
-       km_migrate(sel, dir, type, m, num_migrate);
+       km_migrate(sel, dir, type, m, num_migrate, k);
 
        xfrm_pol_put(pol);