#define xfrm_audit_state_replay(x, s, sq)      do { ; } while (0)
 #endif /* CONFIG_AUDITSYSCALL */
 
-static inline unsigned int xfrm_dst_hash(xfrm_address_t *daddr,
+static inline unsigned int xfrm_dst_hash(struct net *net,
+                                        xfrm_address_t *daddr,
                                         xfrm_address_t *saddr,
                                         u32 reqid,
                                         unsigned short family)
 {
-       return __xfrm_dst_hash(daddr, saddr, reqid, family, init_net.xfrm.state_hmask);
+       return __xfrm_dst_hash(daddr, saddr, reqid, family, net->xfrm.state_hmask);
 }
 
-static inline unsigned int xfrm_src_hash(xfrm_address_t *daddr,
+static inline unsigned int xfrm_src_hash(struct net *net,
+                                        xfrm_address_t *daddr,
                                         xfrm_address_t *saddr,
                                         unsigned short family)
 {
-       return __xfrm_src_hash(daddr, saddr, family, init_net.xfrm.state_hmask);
+       return __xfrm_src_hash(daddr, saddr, family, net->xfrm.state_hmask);
 }
 
 static inline unsigned int
-xfrm_spi_hash(xfrm_address_t *daddr, __be32 spi, u8 proto, unsigned short family)
+xfrm_spi_hash(struct net *net, xfrm_address_t *daddr, __be32 spi, u8 proto, unsigned short family)
 {
-       return __xfrm_spi_hash(daddr, spi, proto, family, init_net.xfrm.state_hmask);
+       return __xfrm_spi_hash(daddr, spi, proto, family, net->xfrm.state_hmask);
 }
 
 static void xfrm_hash_transfer(struct hlist_head *list,
 
 static struct xfrm_state *__xfrm_state_lookup(xfrm_address_t *daddr, __be32 spi, u8 proto, unsigned short family)
 {
-       unsigned int h = xfrm_spi_hash(daddr, spi, proto, family);
+       unsigned int h = xfrm_spi_hash(&init_net, daddr, spi, proto, family);
        struct xfrm_state *x;
        struct hlist_node *entry;
 
 
 static struct xfrm_state *__xfrm_state_lookup_byaddr(xfrm_address_t *daddr, xfrm_address_t *saddr, u8 proto, unsigned short family)
 {
-       unsigned int h = xfrm_src_hash(daddr, saddr, family);
+       unsigned int h = xfrm_src_hash(&init_net, daddr, saddr, family);
        struct xfrm_state *x;
        struct hlist_node *entry;
 
        to_put = NULL;
 
        spin_lock_bh(&xfrm_state_lock);
-       h = xfrm_dst_hash(daddr, saddr, tmpl->reqid, family);
+       h = xfrm_dst_hash(&init_net, daddr, saddr, tmpl->reqid, family);
        hlist_for_each_entry(x, entry, init_net.xfrm.state_bydst+h, bydst) {
                if (x->props.family == family &&
                    x->props.reqid == tmpl->reqid &&
                        x->km.state = XFRM_STATE_ACQ;
                        list_add(&x->km.all, &init_net.xfrm.state_all);
                        hlist_add_head(&x->bydst, init_net.xfrm.state_bydst+h);
-                       h = xfrm_src_hash(daddr, saddr, family);
+                       h = xfrm_src_hash(&init_net, daddr, saddr, family);
                        hlist_add_head(&x->bysrc, init_net.xfrm.state_bysrc+h);
                        if (x->id.spi) {
-                               h = xfrm_spi_hash(&x->id.daddr, x->id.spi, x->id.proto, family);
+                               h = xfrm_spi_hash(&init_net, &x->id.daddr, x->id.spi, x->id.proto, family);
                                hlist_add_head(&x->byspi, init_net.xfrm.state_byspi+h);
                        }
                        x->lft.hard_add_expires_seconds = sysctl_xfrm_acq_expires;
        struct hlist_node *entry;
 
        spin_lock(&xfrm_state_lock);
-       h = xfrm_dst_hash(daddr, saddr, reqid, family);
+       h = xfrm_dst_hash(&init_net, daddr, saddr, reqid, family);
        hlist_for_each_entry(x, entry, init_net.xfrm.state_bydst+h, bydst) {
                if (x->props.family == family &&
                    x->props.reqid == reqid &&
 
        list_add(&x->km.all, &init_net.xfrm.state_all);
 
-       h = xfrm_dst_hash(&x->id.daddr, &x->props.saddr,
+       h = xfrm_dst_hash(&init_net, &x->id.daddr, &x->props.saddr,
                          x->props.reqid, x->props.family);
        hlist_add_head(&x->bydst, init_net.xfrm.state_bydst+h);
 
-       h = xfrm_src_hash(&x->id.daddr, &x->props.saddr, x->props.family);
+       h = xfrm_src_hash(&init_net, &x->id.daddr, &x->props.saddr, x->props.family);
        hlist_add_head(&x->bysrc, init_net.xfrm.state_bysrc+h);
 
        if (x->id.spi) {
-               h = xfrm_spi_hash(&x->id.daddr, x->id.spi, x->id.proto,
+               h = xfrm_spi_hash(&init_net, &x->id.daddr, x->id.spi, x->id.proto,
                                  x->props.family);
 
                hlist_add_head(&x->byspi, init_net.xfrm.state_byspi+h);
        struct hlist_node *entry;
        unsigned int h;
 
-       h = xfrm_dst_hash(&xnew->id.daddr, &xnew->props.saddr, reqid, family);
+       h = xfrm_dst_hash(&init_net, &xnew->id.daddr, &xnew->props.saddr, reqid, family);
        hlist_for_each_entry(x, entry, init_net.xfrm.state_bydst+h, bydst) {
                if (x->props.family     == family &&
                    x->props.reqid      == reqid &&
 /* xfrm_state_lock is held */
 static struct xfrm_state *__find_acq_core(unsigned short family, u8 mode, u32 reqid, u8 proto, xfrm_address_t *daddr, xfrm_address_t *saddr, int create)
 {
-       unsigned int h = xfrm_dst_hash(daddr, saddr, reqid, family);
+       unsigned int h = xfrm_dst_hash(&init_net, daddr, saddr, reqid, family);
        struct hlist_node *entry;
        struct xfrm_state *x;
 
                add_timer(&x->timer);
                list_add(&x->km.all, &init_net.xfrm.state_all);
                hlist_add_head(&x->bydst, init_net.xfrm.state_bydst+h);
-               h = xfrm_src_hash(daddr, saddr, family);
+               h = xfrm_src_hash(&init_net, daddr, saddr, family);
                hlist_add_head(&x->bysrc, init_net.xfrm.state_bysrc+h);
 
                init_net.xfrm.state_num++;
        struct hlist_node *entry;
 
        if (m->reqid) {
-               h = xfrm_dst_hash(&m->old_daddr, &m->old_saddr,
+               h = xfrm_dst_hash(&init_net, &m->old_daddr, &m->old_saddr,
                                  m->reqid, m->old_family);
                hlist_for_each_entry(x, entry, init_net.xfrm.state_bydst+h, bydst) {
                        if (x->props.mode != m->mode ||
                        return x;
                }
        } else {
-               h = xfrm_src_hash(&m->old_daddr, &m->old_saddr,
+               h = xfrm_src_hash(&init_net, &m->old_daddr, &m->old_saddr,
                                  m->old_family);
                hlist_for_each_entry(x, entry, init_net.xfrm.state_bysrc+h, bysrc) {
                        if (x->props.mode != m->mode ||
        }
        if (x->id.spi) {
                spin_lock_bh(&xfrm_state_lock);
-               h = xfrm_spi_hash(&x->id.daddr, x->id.spi, x->id.proto, x->props.family);
+               h = xfrm_spi_hash(&init_net, &x->id.daddr, x->id.spi, x->id.proto, x->props.family);
                hlist_add_head(&x->byspi, init_net.xfrm.state_byspi+h);
                spin_unlock_bh(&xfrm_state_lock);