From: Jamal Hadi Salim Date: Tue, 10 Jun 2008 21:25:34 +0000 (-0700) Subject: ipsec: pfkey should ignore events when no listeners X-Git-Tag: v2.6.26-rc6~13^2~2 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=99c6f60e72f112b57ddb07abb2e5f771ee211f43;p=linux-2.6 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 Signed-off-by: David S. Miller --- diff --git a/net/key/af_key.c b/net/key/af_key.c index 9bba7ac5fe..7470e36727 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);