]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - net/xfrm/xfrm_state.c
xfrm: optimise the use of walk list header in xfrm_policy/state_walk
[mirror_ubuntu-artful-kernel.git] / net / xfrm / xfrm_state.c
index de971b6d38c58310f744988bb970ccb5438ef39b..df9318301e981af5dc5742e8658fb6609ecc529c 100644 (file)
@@ -1043,12 +1043,12 @@ static struct xfrm_state *__find_acq_core(struct net *net,
                        break;
 
                case AF_INET6:
-                       *(struct in6_addr *)x->sel.daddr.a6 = *(struct in6_addr *)daddr;
-                       *(struct in6_addr *)x->sel.saddr.a6 = *(struct in6_addr *)saddr;
+                       x->sel.daddr.in6 = daddr->in6;
+                       x->sel.saddr.in6 = saddr->in6;
                        x->sel.prefixlen_d = 128;
                        x->sel.prefixlen_s = 128;
-                       *(struct in6_addr *)x->props.saddr.a6 = *(struct in6_addr *)saddr;
-                       *(struct in6_addr *)x->id.daddr.a6 = *(struct in6_addr *)daddr;
+                       x->props.saddr.in6 = saddr->in6;
+                       x->id.daddr.in6 = daddr->in6;
                        break;
                }
 
@@ -1626,7 +1626,7 @@ int xfrm_state_walk(struct net *net, struct xfrm_state_walk *walk,
        if (list_empty(&walk->all))
                x = list_first_entry(&net->xfrm.state_all, struct xfrm_state_walk, all);
        else
-               x = list_entry(&walk->all, struct xfrm_state_walk, all);
+               x = list_first_entry(&walk->all, struct xfrm_state_walk, all);
        list_for_each_entry_from(x, &net->xfrm.state_all, all) {
                if (x->state == XFRM_STATE_DEAD)
                        continue;