summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJamal Hadi Salim <hadi@cyberus.ca>2008-06-10 14:25:34 -0700
committerDavid S. Miller <davem@davemloft.net>2008-06-10 14:25:34 -0700
commit99c6f60e72f112b57ddb07abb2e5f771ee211f43 (patch)
treeb955bdf6f02ad700adb0bffd4bcd1c3fc0a20366 /net
parentbc6cffd177f9266af38dba96a2cea06c1e7ff932 (diff)
downloadkernel-crypto-99c6f60e72f112b57ddb07abb2e5f771ee211f43.tar.gz
kernel-crypto-99c6f60e72f112b57ddb07abb2e5f771ee211f43.tar.xz
kernel-crypto-99c6f60e72f112b57ddb07abb2e5f771ee211f43.zip
ipsec: pfkey should ignore events when no listeners
When pfkey has no km listeners, it still does a lot of work before finding out there aint nobody out there. If a tree falls in a forest and no one is around to hear it, does it make a sound? In this case it makes a lot of noise: With this short-circuit adding 10s of thousands of SAs using netlink improves performance by ~10%. Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/key/af_key.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/key/af_key.c b/net/key/af_key.c
index 9bba7ac5fee..7470e367272 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -3030,6 +3030,9 @@ static int key_notify_sa_expire(struct xfrm_state *x, struct km_event *c)
static int pfkey_send_notify(struct xfrm_state *x, struct km_event *c)
{
+ if (atomic_read(&pfkey_socks_nr) == 0)
+ return 0;
+
switch (c->event) {
case XFRM_MSG_EXPIRE:
return key_notify_sa_expire(x, c);