Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 184117
b: refs/heads/master
c: 19f4c71
h: refs/heads/master
i:
  184115: 8ee44b7
v: v3
  • Loading branch information
jamal authored and David S. Miller committed Feb 16, 2010
1 parent 7748458 commit 1697a21
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9546377c42e12513b33925ab829d893dcf521c5f
refs/heads/master: 19f4c7133fc1b94001b997c4843d0a9192ee63e5
2 changes: 1 addition & 1 deletion trunk/net/key/af_key.c
Original file line number Diff line number Diff line change
Expand Up @@ -1751,7 +1751,7 @@ static int pfkey_flush(struct sock *sk, struct sk_buff *skb, struct sadb_msg *hd
audit_info.secid = 0;
err = xfrm_state_flush(net, proto, &audit_info);
if (err)
return err;
return 0;
c.data.proto = proto;
c.seq = hdr->sadb_msg_seq;
c.pid = hdr->sadb_msg_pid;
Expand Down
8 changes: 6 additions & 2 deletions trunk/net/xfrm/xfrm_state.c
Original file line number Diff line number Diff line change
Expand Up @@ -603,13 +603,14 @@ xfrm_state_flush_secctx_check(struct net *net, u8 proto, struct xfrm_audit *audi

int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info)
{
int i, err = 0;
int i, err = 0, cnt = 0;

spin_lock_bh(&xfrm_state_lock);
err = xfrm_state_flush_secctx_check(net, proto, audit_info);
if (err)
goto out;

err = -ESRCH;
for (i = 0; i <= net->xfrm.state_hmask; i++) {
struct hlist_node *entry;
struct xfrm_state *x;
Expand All @@ -626,13 +627,16 @@ int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info)
audit_info->sessionid,
audit_info->secid);
xfrm_state_put(x);
if (!err)
cnt++;

spin_lock_bh(&xfrm_state_lock);
goto restart;
}
}
}
err = 0;
if (cnt)
err = 0;

out:
spin_unlock_bh(&xfrm_state_lock);
Expand Down
2 changes: 1 addition & 1 deletion trunk/net/xfrm/xfrm_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -1525,7 +1525,7 @@ static int xfrm_flush_sa(struct sk_buff *skb, struct nlmsghdr *nlh,
audit_info.secid = NETLINK_CB(skb).sid;
err = xfrm_state_flush(net, p->proto, &audit_info);
if (err)
return err;
return 0;
c.data.proto = p->proto;
c.event = nlh->nlmsg_type;
c.seq = nlh->nlmsg_seq;
Expand Down

0 comments on commit 1697a21

Please sign in to comment.