* [PATCH net-next 0/2] l2tp: drop l2tp_session_find()
@ 2017-04-11 11:12 Guillaume Nault
2017-04-11 11:12 ` [PATCH net-next 1/2] l2tp: remove useless duplicate session detection in l2tp_netlink Guillaume Nault
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Guillaume Nault @ 2017-04-11 11:12 UTC (permalink / raw)
To: netdev; +Cc: James Chapman
l2tp_netlink is the last user of l2tp_session_find(), but that call is
useless. Let's remove it and drop l2tp_session_find() definitely.
Guillaume Nault (2):
l2tp: remove useless duplicate session detection in l2tp_netlink
l2tp: remove l2tp_session_find()
net/l2tp/l2tp_core.c | 51 +------------------------------------------------
net/l2tp/l2tp_core.h | 3 ---
net/l2tp/l2tp_netlink.c | 5 -----
3 files changed, 1 insertion(+), 58 deletions(-)
--
2.11.0
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH net-next 1/2] l2tp: remove useless duplicate session detection in l2tp_netlink 2017-04-11 11:12 [PATCH net-next 0/2] l2tp: drop l2tp_session_find() Guillaume Nault @ 2017-04-11 11:12 ` Guillaume Nault 2017-04-11 11:12 ` [PATCH net-next 2/2] l2tp: remove l2tp_session_find() Guillaume Nault 2017-04-11 17:48 ` [PATCH net-next 0/2] l2tp: drop l2tp_session_find() David Miller 2 siblings, 0 replies; 4+ messages in thread From: Guillaume Nault @ 2017-04-11 11:12 UTC (permalink / raw) To: netdev; +Cc: James Chapman There's no point in checking for duplicate sessions at the beginning of l2tp_nl_cmd_session_create(); the ->session_create() callbacks already return -EEXIST when the session already exists. Furthermore, even if l2tp_session_find() returns NULL, a new session might be created right after the test. So relying on ->session_create() to avoid duplicate session is the only sane behaviour. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr> --- net/l2tp/l2tp_netlink.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/net/l2tp/l2tp_netlink.c b/net/l2tp/l2tp_netlink.c index 7e3e669baac4..12cfcd0ca807 100644 --- a/net/l2tp/l2tp_netlink.c +++ b/net/l2tp/l2tp_netlink.c @@ -521,11 +521,6 @@ static int l2tp_nl_cmd_session_create(struct sk_buff *skb, struct genl_info *inf goto out; } session_id = nla_get_u32(info->attrs[L2TP_ATTR_SESSION_ID]); - session = l2tp_session_find(net, tunnel, session_id); - if (session) { - ret = -EEXIST; - goto out; - } if (!info->attrs[L2TP_ATTR_PEER_SESSION_ID]) { ret = -EINVAL; -- 2.11.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH net-next 2/2] l2tp: remove l2tp_session_find() 2017-04-11 11:12 [PATCH net-next 0/2] l2tp: drop l2tp_session_find() Guillaume Nault 2017-04-11 11:12 ` [PATCH net-next 1/2] l2tp: remove useless duplicate session detection in l2tp_netlink Guillaume Nault @ 2017-04-11 11:12 ` Guillaume Nault 2017-04-11 17:48 ` [PATCH net-next 0/2] l2tp: drop l2tp_session_find() David Miller 2 siblings, 0 replies; 4+ messages in thread From: Guillaume Nault @ 2017-04-11 11:12 UTC (permalink / raw) To: netdev; +Cc: James Chapman This function isn't used anymore. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr> --- net/l2tp/l2tp_core.c | 51 +-------------------------------------------------- net/l2tp/l2tp_core.h | 3 --- 2 files changed, 1 insertion(+), 53 deletions(-) diff --git a/net/l2tp/l2tp_core.c b/net/l2tp/l2tp_core.c index e37d9554da7b..154974be1eed 100644 --- a/net/l2tp/l2tp_core.c +++ b/net/l2tp/l2tp_core.c @@ -217,27 +217,6 @@ static void l2tp_tunnel_sock_put(struct sock *sk) sock_put(sk); } -/* Lookup a session by id in the global session list - */ -static struct l2tp_session *l2tp_session_find_2(struct net *net, u32 session_id) -{ - struct l2tp_net *pn = l2tp_pernet(net); - struct hlist_head *session_list = - l2tp_session_id_hash_2(pn, session_id); - struct l2tp_session *session; - - rcu_read_lock_bh(); - hlist_for_each_entry_rcu(session, session_list, global_hlist) { - if (session->session_id == session_id) { - rcu_read_unlock_bh(); - return session; - } - } - rcu_read_unlock_bh(); - - return NULL; -} - /* Session hash list. * The session_id SHOULD be random according to RFC2661, but several * L2TP implementations (Cisco and Microsoft) use incrementing @@ -250,35 +229,7 @@ l2tp_session_id_hash(struct l2tp_tunnel *tunnel, u32 session_id) return &tunnel->session_hlist[hash_32(session_id, L2TP_HASH_BITS)]; } -/* Lookup a session by id - */ -struct l2tp_session *l2tp_session_find(struct net *net, struct l2tp_tunnel *tunnel, u32 session_id) -{ - struct hlist_head *session_list; - struct l2tp_session *session; - - /* In L2TPv3, session_ids are unique over all tunnels and we - * sometimes need to look them up before we know the - * tunnel. - */ - if (tunnel == NULL) - return l2tp_session_find_2(net, session_id); - - session_list = l2tp_session_id_hash(tunnel, session_id); - read_lock_bh(&tunnel->hlist_lock); - hlist_for_each_entry(session, session_list, hlist) { - if (session->session_id == session_id) { - read_unlock_bh(&tunnel->hlist_lock); - return session; - } - } - read_unlock_bh(&tunnel->hlist_lock); - - return NULL; -} -EXPORT_SYMBOL_GPL(l2tp_session_find); - -/* Like l2tp_session_find() but takes a reference on the returned session. +/* Lookup a session. A new reference is held on the returned session. * Optionally calls session->ref() too if do_ref is true. */ struct l2tp_session *l2tp_session_get(struct net *net, diff --git a/net/l2tp/l2tp_core.h b/net/l2tp/l2tp_core.h index 8ce7818c7a9d..a3248e18badb 100644 --- a/net/l2tp/l2tp_core.h +++ b/net/l2tp/l2tp_core.h @@ -233,9 +233,6 @@ static inline struct l2tp_tunnel *l2tp_sock_to_tunnel(struct sock *sk) struct l2tp_session *l2tp_session_get(struct net *net, struct l2tp_tunnel *tunnel, u32 session_id, bool do_ref); -struct l2tp_session *l2tp_session_find(struct net *net, - struct l2tp_tunnel *tunnel, - u32 session_id); struct l2tp_session *l2tp_session_get_nth(struct l2tp_tunnel *tunnel, int nth, bool do_ref); struct l2tp_session *l2tp_session_get_by_ifname(struct net *net, char *ifname, -- 2.11.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH net-next 0/2] l2tp: drop l2tp_session_find() 2017-04-11 11:12 [PATCH net-next 0/2] l2tp: drop l2tp_session_find() Guillaume Nault 2017-04-11 11:12 ` [PATCH net-next 1/2] l2tp: remove useless duplicate session detection in l2tp_netlink Guillaume Nault 2017-04-11 11:12 ` [PATCH net-next 2/2] l2tp: remove l2tp_session_find() Guillaume Nault @ 2017-04-11 17:48 ` David Miller 2 siblings, 0 replies; 4+ messages in thread From: David Miller @ 2017-04-11 17:48 UTC (permalink / raw) To: g.nault; +Cc: netdev, jchapman From: Guillaume Nault <g.nault@alphalink.fr> Date: Tue, 11 Apr 2017 13:12:03 +0200 > l2tp_netlink is the last user of l2tp_session_find(), but that call is > useless. Let's remove it and drop l2tp_session_find() definitely. Series applied, thank you. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-04-11 17:48 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-04-11 11:12 [PATCH net-next 0/2] l2tp: drop l2tp_session_find() Guillaume Nault 2017-04-11 11:12 ` [PATCH net-next 1/2] l2tp: remove useless duplicate session detection in l2tp_netlink Guillaume Nault 2017-04-11 11:12 ` [PATCH net-next 2/2] l2tp: remove l2tp_session_find() Guillaume Nault 2017-04-11 17:48 ` [PATCH net-next 0/2] l2tp: drop l2tp_session_find() David Miller
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).