aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/xfrm.h2
-rw-r--r--net/key/af_key.c2
-rw-r--r--net/xfrm/xfrm_state.c18
-rw-r--r--net/xfrm/xfrm_user.c2
4 files changed, 12 insertions, 12 deletions
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index 8699620f8c2d..e4bb67225610 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -1363,7 +1363,7 @@ struct xfrmk_spdinfo {
1363 1363
1364extern struct xfrm_state *xfrm_find_acq_byseq(u32 seq); 1364extern struct xfrm_state *xfrm_find_acq_byseq(u32 seq);
1365extern int xfrm_state_delete(struct xfrm_state *x); 1365extern int xfrm_state_delete(struct xfrm_state *x);
1366extern int xfrm_state_flush(u8 proto, struct xfrm_audit *audit_info); 1366extern int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info);
1367extern void xfrm_sad_getinfo(struct xfrmk_sadinfo *si); 1367extern void xfrm_sad_getinfo(struct xfrmk_sadinfo *si);
1368extern void xfrm_spd_getinfo(struct xfrmk_spdinfo *si); 1368extern void xfrm_spd_getinfo(struct xfrmk_spdinfo *si);
1369extern int xfrm_replay_check(struct xfrm_state *x, 1369extern int xfrm_replay_check(struct xfrm_state *x,
diff --git a/net/key/af_key.c b/net/key/af_key.c
index 036315d6b665..e5d595a60921 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -1732,7 +1732,7 @@ static int pfkey_flush(struct sock *sk, struct sk_buff *skb, struct sadb_msg *hd
1732 audit_info.loginuid = audit_get_loginuid(current); 1732 audit_info.loginuid = audit_get_loginuid(current);
1733 audit_info.sessionid = audit_get_sessionid(current); 1733 audit_info.sessionid = audit_get_sessionid(current);
1734 audit_info.secid = 0; 1734 audit_info.secid = 0;
1735 err = xfrm_state_flush(proto, &audit_info); 1735 err = xfrm_state_flush(&init_net, proto, &audit_info);
1736 if (err) 1736 if (err)
1737 return err; 1737 return err;
1738 c.data.proto = proto; 1738 c.data.proto = proto;
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index f3f635d4ee66..5f4c5340ba30 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -576,15 +576,15 @@ EXPORT_SYMBOL(xfrm_state_delete);
576 576
577#ifdef CONFIG_SECURITY_NETWORK_XFRM 577#ifdef CONFIG_SECURITY_NETWORK_XFRM
578static inline int 578static inline int
579xfrm_state_flush_secctx_check(u8 proto, struct xfrm_audit *audit_info) 579xfrm_state_flush_secctx_check(struct net *net, u8 proto, struct xfrm_audit *audit_info)
580{ 580{
581 int i, err = 0; 581 int i, err = 0;
582 582
583 for (i = 0; i <= init_net.xfrm.state_hmask; i++) { 583 for (i = 0; i <= net->xfrm.state_hmask; i++) {
584 struct hlist_node *entry; 584 struct hlist_node *entry;
585 struct xfrm_state *x; 585 struct xfrm_state *x;
586 586
587 hlist_for_each_entry(x, entry, init_net.xfrm.state_bydst+i, bydst) { 587 hlist_for_each_entry(x, entry, net->xfrm.state_bydst+i, bydst) {
588 if (xfrm_id_proto_match(x->id.proto, proto) && 588 if (xfrm_id_proto_match(x->id.proto, proto) &&
589 (err = security_xfrm_state_delete(x)) != 0) { 589 (err = security_xfrm_state_delete(x)) != 0) {
590 xfrm_audit_state_delete(x, 0, 590 xfrm_audit_state_delete(x, 0,
@@ -600,26 +600,26 @@ xfrm_state_flush_secctx_check(u8 proto, struct xfrm_audit *audit_info)
600} 600}
601#else 601#else
602static inline int 602static inline int
603xfrm_state_flush_secctx_check(u8 proto, struct xfrm_audit *audit_info) 603xfrm_state_flush_secctx_check(struct net *net, u8 proto, struct xfrm_audit *audit_info)
604{ 604{
605 return 0; 605 return 0;
606} 606}
607#endif 607#endif
608 608
609int xfrm_state_flush(u8 proto, struct xfrm_audit *audit_info) 609int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info)
610{ 610{
611 int i, err = 0; 611 int i, err = 0;
612 612
613 spin_lock_bh(&xfrm_state_lock); 613 spin_lock_bh(&xfrm_state_lock);
614 err = xfrm_state_flush_secctx_check(proto, audit_info); 614 err = xfrm_state_flush_secctx_check(net, proto, audit_info);
615 if (err) 615 if (err)
616 goto out; 616 goto out;
617 617
618 for (i = 0; i <= init_net.xfrm.state_hmask; i++) { 618 for (i = 0; i <= net->xfrm.state_hmask; i++) {
619 struct hlist_node *entry; 619 struct hlist_node *entry;
620 struct xfrm_state *x; 620 struct xfrm_state *x;
621restart: 621restart:
622 hlist_for_each_entry(x, entry, init_net.xfrm.state_bydst+i, bydst) { 622 hlist_for_each_entry(x, entry, net->xfrm.state_bydst+i, bydst) {
623 if (!xfrm_state_kern(x) && 623 if (!xfrm_state_kern(x) &&
624 xfrm_id_proto_match(x->id.proto, proto)) { 624 xfrm_id_proto_match(x->id.proto, proto)) {
625 xfrm_state_hold(x); 625 xfrm_state_hold(x);
@@ -641,7 +641,7 @@ restart:
641 641
642out: 642out:
643 spin_unlock_bh(&xfrm_state_lock); 643 spin_unlock_bh(&xfrm_state_lock);
644 wake_up(&init_net.xfrm.km_waitq); 644 wake_up(&net->xfrm.km_waitq);
645 return err; 645 return err;
646} 646}
647EXPORT_SYMBOL(xfrm_state_flush); 647EXPORT_SYMBOL(xfrm_state_flush);
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index 765c01e784e9..49a7e897ba96 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -1398,7 +1398,7 @@ static int xfrm_flush_sa(struct sk_buff *skb, struct nlmsghdr *nlh,
1398 audit_info.loginuid = NETLINK_CB(skb).loginuid; 1398 audit_info.loginuid = NETLINK_CB(skb).loginuid;
1399 audit_info.sessionid = NETLINK_CB(skb).sessionid; 1399 audit_info.sessionid = NETLINK_CB(skb).sessionid;
1400 audit_info.secid = NETLINK_CB(skb).sid; 1400 audit_info.secid = NETLINK_CB(skb).sid;
1401 err = xfrm_state_flush(p->proto, &audit_info); 1401 err = xfrm_state_flush(&init_net, p->proto, &audit_info);
1402 if (err) 1402 if (err)
1403 return err; 1403 return err;
1404 c.data.proto = p->proto; 1404 c.data.proto = p->proto;