From: Ying Xue <ying.xue@windriver.com>
To: <netdev@vger.kernel.org>
Cc: <eric.dumazet@gmail.com>, <alexei@purestorage.com>,
<joern@purestorage.com>, <ja@ssi.bg>, <davem@davemloft.net>
Subject: [PATCH net-next 4/6] neigh: align the usage of neigh timer with one of sock timer
Date: Fri, 15 May 2015 14:55:44 +0800 [thread overview]
Message-ID: <1431672946-300-5-git-send-email-ying.xue@windriver.com> (raw)
In-Reply-To: <1431672946-300-1-git-send-email-ying.xue@windriver.com>
Keep the usage of neigh timer aligned with one of sock timer, making
the usage of neigh timer more understandable. To reach the goal, a new
function - __neigh_release() is introduced in neigh_del_timer(), and
it just decreases neigh refcount but doesn't call neigh_destroy().
This makes sense because neigh recount has been taken when its timer
is added, and it cannot hit zero when the timer is deleted.
Signed-off-by: Ying Xue <ying.xue@windriver.com>
---
net/core/neighbour.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index 433b617..8a438fc 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -173,14 +173,18 @@ static void neigh_add_timer(struct neighbour *n, unsigned long when)
}
}
-static int neigh_del_timer(struct neighbour *n)
+/* Ungrab neigh in the context, which assumes that neigh refcnt
+ * cannot hit zero.
+ */
+static void __neigh_release(struct neighbour *n)
{
- if ((n->nud_state & NUD_IN_TIMER) &&
- del_timer(&n->timer)) {
- neigh_release(n);
- return 1;
- }
- return 0;
+ atomic_dec(&n->refcnt);
+}
+
+static void neigh_del_timer(struct neighbour *n)
+{
+ if ((n->nud_state & NUD_IN_TIMER) && del_timer(&n->timer))
+ __neigh_release(n);
}
static void pneigh_queue_purge(struct sk_buff_head *list)
--
1.7.9.5
next prev parent reply other threads:[~2015-05-15 6:57 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-15 6:55 [PATCH net-next 0/6] neigh cleanups and fixes Ying Xue
2015-05-15 6:55 ` [PATCH net-next 1/6] net: fix a double free issue for neighbour entry Ying Xue
2015-05-15 6:55 ` [PATCH net-next 2/6] neigh: fix a possible leak issue of neigh entry Ying Xue
2015-05-15 12:12 ` Eric Dumazet
2015-05-15 15:39 ` David Miller
2015-05-18 3:24 ` Ying Xue
2015-05-18 4:58 ` Eric Dumazet
2015-05-18 5:55 ` Ying Xue
2015-05-18 12:54 ` Eric Dumazet
2015-05-15 6:55 ` [PATCH net-next 3/6] neigh: don't delete neighbour time in neigh_destroy Ying Xue
2015-05-15 6:55 ` Ying Xue [this message]
2015-05-15 6:55 ` [PATCH net-next 5/6] neigh: neigh dead and timer variables should be protected under its lock Ying Xue
2015-05-15 6:55 ` [PATCH net-next 6/6] neigh: use standard interface to modify timer Ying Xue
2015-05-15 12:14 ` [PATCH net-next 0/6] neigh cleanups and fixes Eric Dumazet
2015-05-15 15:40 ` David Miller
2015-05-18 3:30 ` Ying Xue
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1431672946-300-5-git-send-email-ying.xue@windriver.com \
--to=ying.xue@windriver.com \
--cc=alexei@purestorage.com \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=ja@ssi.bg \
--cc=joern@purestorage.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).