Skip to content

Commit

Permalink
netns xfrm: pass netns with KM notifications
Browse files Browse the repository at this point in the history
SA and SPD flush are executed with NULL SA and SPD respectively, for
these cases pass netns explicitly from userspace socket.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Alexey Dobriyan authored and David S. Miller committed Nov 26, 2008
1 parent fc34acd commit 7067802
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 2 deletions.
1 change: 1 addition & 0 deletions include/net/xfrm.h
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,7 @@ struct km_event
u32 seq;
u32 pid;
u32 event;
struct net *net;
};

struct net_device;
Expand Down
2 changes: 2 additions & 0 deletions net/key/af_key.c
Original file line number Diff line number Diff line change
Expand Up @@ -1739,6 +1739,7 @@ static int pfkey_flush(struct sock *sk, struct sk_buff *skb, struct sadb_msg *hd
c.seq = hdr->sadb_msg_seq;
c.pid = hdr->sadb_msg_pid;
c.event = XFRM_MSG_FLUSHSA;
c.net = &init_net;
km_state_notify(NULL, &c);

return 0;
Expand Down Expand Up @@ -2693,6 +2694,7 @@ static int pfkey_spdflush(struct sock *sk, struct sk_buff *skb, struct sadb_msg
c.event = XFRM_MSG_FLUSHPOLICY;
c.pid = hdr->sadb_msg_pid;
c.seq = hdr->sadb_msg_seq;
c.net = &init_net;
km_policy_notify(NULL, 0, &c);

return 0;
Expand Down
6 changes: 4 additions & 2 deletions net/xfrm/xfrm_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -1418,6 +1418,7 @@ static int xfrm_flush_sa(struct sk_buff *skb, struct nlmsghdr *nlh,
c.event = nlh->nlmsg_type;
c.seq = nlh->nlmsg_seq;
c.pid = nlh->nlmsg_pid;
c.net = net;
km_state_notify(NULL, &c);

return 0;
Expand Down Expand Up @@ -1569,6 +1570,7 @@ static int xfrm_flush_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
c.event = nlh->nlmsg_type;
c.seq = nlh->nlmsg_seq;
c.pid = nlh->nlmsg_pid;
c.net = net;
km_policy_notify(NULL, 0, &c);
return 0;
}
Expand Down Expand Up @@ -2084,7 +2086,7 @@ static int xfrm_aevent_state_notify(struct xfrm_state *x, struct km_event *c)

static int xfrm_notify_sa_flush(struct km_event *c)
{
struct net *net = &init_net;
struct net *net = c->net;
struct xfrm_usersa_flush *p;
struct nlmsghdr *nlh;
struct sk_buff *skb;
Expand Down Expand Up @@ -2446,7 +2448,7 @@ static int xfrm_notify_policy(struct xfrm_policy *xp, int dir, struct km_event *

static int xfrm_notify_policy_flush(struct km_event *c)
{
struct net *net = &init_net;
struct net *net = c->net;
struct nlmsghdr *nlh;
struct sk_buff *skb;

Expand Down

0 comments on commit 7067802

Please sign in to comment.