public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
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, &gtp->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, &gtp->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

  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