From: Andreas Schultz <aschultz@tpip•net>
To: Pablo Neira <pablo@netfilter•org>
Cc: netdev@vger•kernel.org, Harald Welte <laforge@gnumonks•org>,
Lionel Gauthier <Lionel.Gauthier@eurecom•fr>,
openbsc@lists•osmocom.org
Subject: [PATCH 4/6] gtp: consolidate pdp context destruction into helper
Date: Mon, 30 Jan 2017 17:31:58 +0100 [thread overview]
Message-ID: <20170130163200.17070-5-aschultz@tpip.net> (raw)
In-Reply-To: <20170130163200.17070-1-aschultz@tpip.net>
Consolidate duplicate code into helper.
Signed-off-by: Andreas Schultz <aschultz@tpip•net>
---
drivers/net/gtp.c | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c
index 6b7a3c2..68c6c9b 100644
--- a/drivers/net/gtp.c
+++ b/drivers/net/gtp.c
@@ -84,6 +84,8 @@ struct gtp_net {
static u32 gtp_h_initval;
+static void pdp_context_delete(struct pdp_ctx *pctx);
+
static inline u32 gtp0_hashfn(u64 tid)
{
u32 *tid32 = (u32 *) &tid;
@@ -774,13 +776,10 @@ static void gtp_hashtable_free(struct gtp_dev *gtp)
struct pdp_ctx *pctx;
int i;
- for (i = 0; i < gtp->hash_size; i++) {
- hlist_for_each_entry_rcu(pctx, >p->tid_hash[i], hlist_tid) {
- hlist_del_rcu(&pctx->hlist_tid);
- hlist_del_rcu(&pctx->hlist_addr);
- kfree_rcu(pctx, rcu_head);
- }
- }
+ for (i = 0; i < gtp->hash_size; i++)
+ hlist_for_each_entry_rcu(pctx, >p->tid_hash[i], hlist_tid)
+ pdp_context_delete(pctx);
+
synchronize_rcu();
kfree(gtp->addr_hash);
kfree(gtp->tid_hash);
@@ -985,6 +984,13 @@ static int ipv4_pdp_add(struct gtp_dev *gtp, struct genl_info *info)
return 0;
}
+static void pdp_context_delete(struct pdp_ctx *pctx)
+{
+ hlist_del_rcu(&pctx->hlist_tid);
+ hlist_del_rcu(&pctx->hlist_addr);
+ kfree(pctx);
+}
+
static int gtp_genl_new_pdp(struct sk_buff *skb, struct genl_info *info)
{
struct gtp_dev *gtp;
@@ -1093,9 +1099,7 @@ static int gtp_genl_del_pdp(struct sk_buff *skb, struct genl_info *info)
pr_debug("GTPv1-U: deleting tunnel id = %x/%x (pdp %p)\n",
pctx->u.v1.i_tei, pctx->u.v1.o_tei, pctx);
- hlist_del_rcu(&pctx->hlist_tid);
- hlist_del_rcu(&pctx->hlist_addr);
- kfree_rcu(pctx, rcu_head);
+ pdp_context_delete(pctx);
out_unlock:
rcu_read_unlock();
--
2.10.2
next prev parent reply other threads:[~2017-01-30 16:42 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-30 16:31 [PATCH 0/6] gtp: misc improvements Andreas Schultz
2017-01-30 16:31 ` [PATCH 1/6] gtp: make GTP sockets in gtp_newlink optional Andreas Schultz
2017-01-30 16:31 ` [PATCH 2/6] gtp: merge gtp_get_net and gtp_genl_find_dev Andreas Schultz
2017-01-30 16:31 ` [PATCH 3/6] gtp: unify genl_find_pdp and prepare for per socket lookup Andreas Schultz
2017-01-30 16:31 ` Andreas Schultz [this message]
2017-01-30 16:31 ` [PATCH 5/6] gtp: add socket to pdp context Andreas Schultz
2017-01-30 16:32 ` [PATCH 6/6] gtp: consolidate gtp socket rx path Andreas Schultz
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=20170130163200.17070-5-aschultz@tpip.net \
--to=aschultz@tpip$(echo .)net \
--cc=Lionel.Gauthier@eurecom$(echo .)fr \
--cc=laforge@gnumonks$(echo .)org \
--cc=netdev@vger$(echo .)kernel.org \
--cc=openbsc@lists$(echo .)osmocom.org \
--cc=pablo@netfilter$(echo .)org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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