/* Sequence number for replay protection. */
        union {
-               u64 output;
-               __be32 input;
+               struct {
+                       __u32 low;
+                       __u32 hi;
+               } output;
+               struct {
+                       __be32 low;
+                       __be32 hi;
+               } input;
        } seq;
 };
 
 
 
        ah->reserved = 0;
        ah->spi = x->id.spi;
-       ah->seq_no = htonl(XFRM_SKB_CB(skb)->seq.output);
+       ah->seq_no = htonl(XFRM_SKB_CB(skb)->seq.output.low);
 
        sg_init_table(sg, nfrags);
        skb_to_sgvec(skb, sg, 0, skb->len);
 
        }
 
        esph->spi = x->id.spi;
-       esph->seq_no = htonl(XFRM_SKB_CB(skb)->seq.output);
+       esph->seq_no = htonl(XFRM_SKB_CB(skb)->seq.output.low);
 
        sg_init_table(sg, nfrags);
        skb_to_sgvec(skb, sg,
        aead_givcrypt_set_crypt(req, sg, sg, clen, iv);
        aead_givcrypt_set_assoc(req, asg, sizeof(*esph));
        aead_givcrypt_set_giv(req, esph->enc_data,
-                             XFRM_SKB_CB(skb)->seq.output);
+                             XFRM_SKB_CB(skb)->seq.output.low);
 
        ESP_SKB_CB(skb)->tmp = tmp;
        err = crypto_aead_givencrypt(req);
 
 
        ah->reserved = 0;
        ah->spi = x->id.spi;
-       ah->seq_no = htonl(XFRM_SKB_CB(skb)->seq.output);
+       ah->seq_no = htonl(XFRM_SKB_CB(skb)->seq.output.low);
 
        sg_init_table(sg, nfrags);
        skb_to_sgvec(skb, sg, 0, skb->len);
 
        *skb_mac_header(skb) = IPPROTO_ESP;
 
        esph->spi = x->id.spi;
-       esph->seq_no = htonl(XFRM_SKB_CB(skb)->seq.output);
+       esph->seq_no = htonl(XFRM_SKB_CB(skb)->seq.output.low);
 
        sg_init_table(sg, nfrags);
        skb_to_sgvec(skb, sg,
        aead_givcrypt_set_crypt(req, sg, sg, clen, iv);
        aead_givcrypt_set_assoc(req, asg, sizeof(*esph));
        aead_givcrypt_set_giv(req, esph->enc_data,
-                             XFRM_SKB_CB(skb)->seq.output);
+                             XFRM_SKB_CB(skb)->seq.output.low);
 
        ESP_SKB_CB(skb)->tmp = tmp;
        err = crypto_aead_givencrypt(req);
 
        if (encap_type < 0) {
                async = 1;
                x = xfrm_input_state(skb);
-               seq = XFRM_SKB_CB(skb)->seq.input;
+               seq = XFRM_SKB_CB(skb)->seq.input.low;
                goto resume;
        }
 
 
                spin_unlock(&x->lock);
 
-               XFRM_SKB_CB(skb)->seq.input = seq;
+               XFRM_SKB_CB(skb)->seq.input.low = seq;
 
                nexthdr = x->type->input(x, skb);
 
 
                }
 
                if (x->type->flags & XFRM_TYPE_REPLAY_PROT) {
-                       XFRM_SKB_CB(skb)->seq.output = ++x->replay.oseq;
+                       XFRM_SKB_CB(skb)->seq.output.low = ++x->replay.oseq;
                        if (unlikely(x->replay.oseq == 0)) {
                                XFRM_INC_STATS(net, LINUX_MIB_XFRMOUTSTATESEQERROR);
                                x->replay.oseq--;