* [PATCH net-next 0/4] net: avoid indirect calls in dst functions
@ 2020-12-11 1:58 Brian Vazquez
2020-12-11 1:58 ` [PATCH net-next 1/4] net: use indirect call helpers for dst_input Brian Vazquez
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Brian Vazquez @ 2020-12-11 1:58 UTC (permalink / raw)
To: Brian Vazquez, Brian Vazquez, Eric Dumazet, David S . Miller
Cc: linux-kernel, netdev
From: brianvv <brianvv@google.com>
Use of the indirect call wrappers in some dst related functions for the
ipv6/ipv4 case. This is a small improvent for CONFIG_RETPOLINE=y
brianvv (4):
net: use indirect call helpers for dst_input
net: use indirect call helpers for dst_output
net: use indirect call helpers for dst_mtu
net: indirect call helpers for ipv4/ipv6 dst_check functions
include/net/dst.h | 25 +++++++++++++++++++++----
net/core/sock.c | 12 ++++++++++--
net/ipv4/route.c | 12 ++++++++----
net/ipv4/tcp_ipv4.c | 5 ++++-
net/ipv6/route.c | 12 ++++++++----
net/ipv6/tcp_ipv6.c | 5 ++++-
6 files changed, 55 insertions(+), 16 deletions(-)
--
2.29.2.576.ga3fc446d84-goog
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH net-next 1/4] net: use indirect call helpers for dst_input
2020-12-11 1:58 [PATCH net-next 0/4] net: avoid indirect calls in dst functions Brian Vazquez
@ 2020-12-11 1:58 ` Brian Vazquez
2020-12-11 7:57 ` kernel test robot
2020-12-11 1:58 ` [PATCH net-next 2/4] net: use indirect call helpers for dst_output Brian Vazquez
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Brian Vazquez @ 2020-12-11 1:58 UTC (permalink / raw)
To: Brian Vazquez, Brian Vazquez, Eric Dumazet, David S . Miller
Cc: linux-kernel, netdev
From: brianvv <brianvv@google.com>
This patch avoids the indirect call for the common case:
ip_local_deliver and ip6_input
Signed-off-by: brianvv <brianvv@google.com>
---
include/net/dst.h | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/include/net/dst.h b/include/net/dst.h
index 10f0a8399867..98cf6e8c06c4 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -18,6 +18,7 @@
#include <linux/refcount.h>
#include <net/neighbour.h>
#include <asm/processor.h>
+#include <linux/indirect_call_wrapper.h>
struct sk_buff;
@@ -441,10 +442,13 @@ static inline int dst_output(struct net *net, struct sock *sk, struct sk_buff *s
return skb_dst(skb)->output(net, sk, skb);
}
+INDIRECT_CALLABLE_DECLARE(int ip6_input(struct sk_buff *));
+INDIRECT_CALLABLE_DECLARE(int ip_local_deliver(struct sk_buff *));
/* Input packet from network to transport. */
static inline int dst_input(struct sk_buff *skb)
{
- return skb_dst(skb)->input(skb);
+ return INDIRECT_CALL_INET(skb_dst(skb)->input,
+ ip6_input, ip_local_deliver, skb);
}
static inline struct dst_entry *dst_check(struct dst_entry *dst, u32 cookie)
--
2.29.2.576.ga3fc446d84-goog
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH net-next 2/4] net: use indirect call helpers for dst_output
2020-12-11 1:58 [PATCH net-next 0/4] net: avoid indirect calls in dst functions Brian Vazquez
2020-12-11 1:58 ` [PATCH net-next 1/4] net: use indirect call helpers for dst_input Brian Vazquez
@ 2020-12-11 1:58 ` Brian Vazquez
2020-12-11 10:23 ` kernel test robot
2020-12-11 1:58 ` [PATCH net-next 3/4] net: use indirect call helpers for dst_mtu Brian Vazquez
2020-12-11 1:58 ` [PATCH net-next 4/4] net: indirect call helpers for ipv4/ipv6 dst_check functions Brian Vazquez
3 siblings, 1 reply; 7+ messages in thread
From: Brian Vazquez @ 2020-12-11 1:58 UTC (permalink / raw)
To: Brian Vazquez, Brian Vazquez, Eric Dumazet, David S . Miller
Cc: linux-kernel, netdev
From: brianvv <brianvv@google.com>
This patch avoids the indirect call for the common case:
ip6_output and ip_output
Signed-off-by: brianvv <brianvv@google.com>
---
include/net/dst.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/include/net/dst.h b/include/net/dst.h
index 98cf6e8c06c4..3932e9931f08 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -436,10 +436,16 @@ static inline void dst_set_expires(struct dst_entry *dst, int timeout)
dst->expires = expires;
}
+INDIRECT_CALLABLE_DECLARE(int ip6_output(struct net *, struct sock *,
+ struct sk_buff *));
+INDIRECT_CALLABLE_DECLARE(int ip_output(struct net *, struct sock *,
+ struct sk_buff *));
/* Output packet to network from transport. */
static inline int dst_output(struct net *net, struct sock *sk, struct sk_buff *skb)
{
- return skb_dst(skb)->output(net, sk, skb);
+ return INDIRECT_CALL_INET(skb_dst(skb)->output,
+ ip6_output, ip_output,
+ net, sk, skb);
}
INDIRECT_CALLABLE_DECLARE(int ip6_input(struct sk_buff *));
--
2.29.2.576.ga3fc446d84-goog
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH net-next 3/4] net: use indirect call helpers for dst_mtu
2020-12-11 1:58 [PATCH net-next 0/4] net: avoid indirect calls in dst functions Brian Vazquez
2020-12-11 1:58 ` [PATCH net-next 1/4] net: use indirect call helpers for dst_input Brian Vazquez
2020-12-11 1:58 ` [PATCH net-next 2/4] net: use indirect call helpers for dst_output Brian Vazquez
@ 2020-12-11 1:58 ` Brian Vazquez
2020-12-11 1:58 ` [PATCH net-next 4/4] net: indirect call helpers for ipv4/ipv6 dst_check functions Brian Vazquez
3 siblings, 0 replies; 7+ messages in thread
From: Brian Vazquez @ 2020-12-11 1:58 UTC (permalink / raw)
To: Brian Vazquez, Brian Vazquez, Eric Dumazet, David S . Miller
Cc: linux-kernel, netdev
From: brianvv <brianvv@google.com>
This patch avoids the indirect call for the common case:
ip6_mtu and ipv4_mtu
Signed-off-by: brianvv <brianvv@google.com>
---
include/net/dst.h | 4 +++-
net/ipv4/route.c | 6 ++++--
net/ipv6/route.c | 6 ++++--
3 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/include/net/dst.h b/include/net/dst.h
index 3932e9931f08..9f474a79ed7d 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -194,9 +194,11 @@ dst_feature(const struct dst_entry *dst, u32 feature)
return dst_metric(dst, RTAX_FEATURES) & feature;
}
+INDIRECT_CALLABLE_DECLARE(unsigned int ip6_mtu(const struct dst_entry *));
+INDIRECT_CALLABLE_DECLARE(unsigned int ipv4_mtu(const struct dst_entry *));
static inline u32 dst_mtu(const struct dst_entry *dst)
{
- return dst->ops->mtu(dst);
+ return INDIRECT_CALL_INET(dst->ops->mtu, ip6_mtu, ipv4_mtu, dst);
}
/* RTT metrics are stored in milliseconds for user ABI, but used as jiffies */
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index e26652ff7059..4fac91f8bd6c 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -135,7 +135,8 @@ static int ip_rt_gc_timeout __read_mostly = RT_GC_TIMEOUT;
static struct dst_entry *ipv4_dst_check(struct dst_entry *dst, u32 cookie);
static unsigned int ipv4_default_advmss(const struct dst_entry *dst);
-static unsigned int ipv4_mtu(const struct dst_entry *dst);
+INDIRECT_CALLABLE_SCOPE
+unsigned int ipv4_mtu(const struct dst_entry *dst);
static struct dst_entry *ipv4_negative_advice(struct dst_entry *dst);
static void ipv4_link_failure(struct sk_buff *skb);
static void ip_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,
@@ -1311,7 +1312,7 @@ static unsigned int ipv4_default_advmss(const struct dst_entry *dst)
return min(advmss, IPV4_MAX_PMTU - header_size);
}
-static unsigned int ipv4_mtu(const struct dst_entry *dst)
+INDIRECT_CALLABLE_SCOPE unsigned int ipv4_mtu(const struct dst_entry *dst)
{
const struct rtable *rt = (const struct rtable *)dst;
unsigned int mtu = rt->rt_pmtu;
@@ -1333,6 +1334,7 @@ static unsigned int ipv4_mtu(const struct dst_entry *dst)
return mtu - lwtunnel_headroom(dst->lwtstate, mtu);
}
+EXPORT_SYMBOL(ipv4_mtu);
static void ip_del_fnhe(struct fib_nh_common *nhc, __be32 daddr)
{
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 188e114b29b4..22caee290b6c 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -83,7 +83,8 @@ enum rt6_nud_state {
static struct dst_entry *ip6_dst_check(struct dst_entry *dst, u32 cookie);
static unsigned int ip6_default_advmss(const struct dst_entry *dst);
-static unsigned int ip6_mtu(const struct dst_entry *dst);
+INDIRECT_CALLABLE_SCOPE
+unsigned int ip6_mtu(const struct dst_entry *dst);
static struct dst_entry *ip6_negative_advice(struct dst_entry *);
static void ip6_dst_destroy(struct dst_entry *);
static void ip6_dst_ifdown(struct dst_entry *,
@@ -3089,7 +3090,7 @@ static unsigned int ip6_default_advmss(const struct dst_entry *dst)
return mtu;
}
-static unsigned int ip6_mtu(const struct dst_entry *dst)
+INDIRECT_CALLABLE_SCOPE unsigned int ip6_mtu(const struct dst_entry *dst)
{
struct inet6_dev *idev;
unsigned int mtu;
@@ -3111,6 +3112,7 @@ static unsigned int ip6_mtu(const struct dst_entry *dst)
return mtu - lwtunnel_headroom(dst->lwtstate, mtu);
}
+EXPORT_SYMBOL(ip6_mtu);
/* MTU selection:
* 1. mtu on route is locked - use it
--
2.29.2.576.ga3fc446d84-goog
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH net-next 4/4] net: indirect call helpers for ipv4/ipv6 dst_check functions
2020-12-11 1:58 [PATCH net-next 0/4] net: avoid indirect calls in dst functions Brian Vazquez
` (2 preceding siblings ...)
2020-12-11 1:58 ` [PATCH net-next 3/4] net: use indirect call helpers for dst_mtu Brian Vazquez
@ 2020-12-11 1:58 ` Brian Vazquez
3 siblings, 0 replies; 7+ messages in thread
From: Brian Vazquez @ 2020-12-11 1:58 UTC (permalink / raw)
To: Brian Vazquez, Brian Vazquez, Eric Dumazet, David S . Miller
Cc: linux-kernel, netdev
From: brianvv <brianvv@google.com>
This patch avoids the indirect call for the common case:
ip6_dst_check and ipv4_dst_check
Signed-off-by: brianvv <brianvv@google.com>
---
include/net/dst.h | 7 ++++++-
net/core/sock.c | 12 ++++++++++--
net/ipv4/route.c | 6 ++++--
net/ipv4/tcp_ipv4.c | 5 ++++-
net/ipv6/route.c | 6 ++++--
net/ipv6/tcp_ipv6.c | 5 ++++-
6 files changed, 32 insertions(+), 9 deletions(-)
diff --git a/include/net/dst.h b/include/net/dst.h
index 9f474a79ed7d..26f134ad3a25 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -459,10 +459,15 @@ static inline int dst_input(struct sk_buff *skb)
ip6_input, ip_local_deliver, skb);
}
+INDIRECT_CALLABLE_DECLARE(struct dst_entry *ip6_dst_check(struct dst_entry *,
+ u32));
+INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *,
+ u32));
static inline struct dst_entry *dst_check(struct dst_entry *dst, u32 cookie)
{
if (dst->obsolete)
- dst = dst->ops->check(dst, cookie);
+ dst = INDIRECT_CALL_INET(dst->ops->check, ip6_dst_check,
+ ipv4_dst_check, dst, cookie);
return dst;
}
diff --git a/net/core/sock.c b/net/core/sock.c
index 4fd7e785f177..753b831a9d70 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -526,11 +526,17 @@ int __sk_receive_skb(struct sock *sk, struct sk_buff *skb,
}
EXPORT_SYMBOL(__sk_receive_skb);
+INDIRECT_CALLABLE_DECLARE(struct dst_entry *ip6_dst_check(struct dst_entry *,
+ u32));
+INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *,
+ u32));
struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)
{
struct dst_entry *dst = __sk_dst_get(sk);
- if (dst && dst->obsolete && dst->ops->check(dst, cookie) == NULL) {
+ if (dst && dst->obsolete &&
+ INDIRECT_CALL_INET(dst->ops->check, ip6_dst_check, ipv4_dst_check,
+ dst, cookie) == NULL) {
sk_tx_queue_clear(sk);
sk->sk_dst_pending_confirm = 0;
RCU_INIT_POINTER(sk->sk_dst_cache, NULL);
@@ -546,7 +552,9 @@ struct dst_entry *sk_dst_check(struct sock *sk, u32 cookie)
{
struct dst_entry *dst = sk_dst_get(sk);
- if (dst && dst->obsolete && dst->ops->check(dst, cookie) == NULL) {
+ if (dst && dst->obsolete &&
+ INDIRECT_CALL_INET(dst->ops->check, ip6_dst_check, ipv4_dst_check,
+ dst, cookie) == NULL) {
sk_dst_reset(sk);
dst_release(dst);
return NULL;
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 4fac91f8bd6c..f06dfba3d272 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -133,7 +133,8 @@ static int ip_rt_gc_timeout __read_mostly = RT_GC_TIMEOUT;
* Interface to generic destination cache.
*/
-static struct dst_entry *ipv4_dst_check(struct dst_entry *dst, u32 cookie);
+INDIRECT_CALLABLE_SCOPE
+struct dst_entry *ipv4_dst_check(struct dst_entry *dst, u32 cookie);
static unsigned int ipv4_default_advmss(const struct dst_entry *dst);
INDIRECT_CALLABLE_SCOPE
unsigned int ipv4_mtu(const struct dst_entry *dst);
@@ -1188,7 +1189,8 @@ void ipv4_sk_redirect(struct sk_buff *skb, struct sock *sk)
}
EXPORT_SYMBOL_GPL(ipv4_sk_redirect);
-static struct dst_entry *ipv4_dst_check(struct dst_entry *dst, u32 cookie)
+INDIRECT_CALLABLE_SCOPE struct dst_entry *ipv4_dst_check(struct dst_entry *dst,
+ u32 cookie)
{
struct rtable *rt = (struct rtable *) dst;
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index af2338294598..aba5061024c7 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1646,6 +1646,8 @@ u16 tcp_v4_get_syncookie(struct sock *sk, struct iphdr *iph,
return mss;
}
+INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *,
+ u32));
/* The socket must have it's spinlock held when we get
* here, unless it is a TCP_LISTEN socket.
*
@@ -1665,7 +1667,8 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
sk_mark_napi_id(sk, skb);
if (dst) {
if (inet_sk(sk)->rx_dst_ifindex != skb->skb_iif ||
- !dst->ops->check(dst, 0)) {
+ !INDIRECT_CALL_1(dst->ops->check, ipv4_dst_check,
+ dst, 0)) {
dst_release(dst);
sk->sk_rx_dst = NULL;
}
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 22caee290b6c..071b5ff8f88f 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -81,7 +81,8 @@ enum rt6_nud_state {
RT6_NUD_SUCCEED = 1
};
-static struct dst_entry *ip6_dst_check(struct dst_entry *dst, u32 cookie);
+INDIRECT_CALLABLE_SCOPE
+struct dst_entry *ip6_dst_check(struct dst_entry *dst, u32 cookie);
static unsigned int ip6_default_advmss(const struct dst_entry *dst);
INDIRECT_CALLABLE_SCOPE
unsigned int ip6_mtu(const struct dst_entry *dst);
@@ -2612,7 +2613,8 @@ static struct dst_entry *rt6_dst_from_check(struct rt6_info *rt,
return NULL;
}
-static struct dst_entry *ip6_dst_check(struct dst_entry *dst, u32 cookie)
+INDIRECT_CALLABLE_SCOPE struct dst_entry *ip6_dst_check(struct dst_entry *dst,
+ u32 cookie)
{
struct dst_entry *dst_ret;
struct fib6_info *from;
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 1a1510513739..9e61e4fda03e 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1417,6 +1417,8 @@ static struct sock *tcp_v6_syn_recv_sock(const struct sock *sk, struct sk_buff *
return NULL;
}
+INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *,
+ u32));
/* The socket must have it's spinlock held when we get
* here, unless it is a TCP_LISTEN socket.
*
@@ -1470,7 +1472,8 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
sk_mark_napi_id(sk, skb);
if (dst) {
if (inet_sk(sk)->rx_dst_ifindex != skb->skb_iif ||
- dst->ops->check(dst, np->rx_dst_cookie) == NULL) {
+ INDIRECT_CALL_1(dst->ops->check, ip6_dst_check,
+ dst, np->rx_dst_cookie) == NULL) {
dst_release(dst);
sk->sk_rx_dst = NULL;
}
--
2.29.2.576.ga3fc446d84-goog
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH net-next 1/4] net: use indirect call helpers for dst_input
2020-12-11 1:58 ` [PATCH net-next 1/4] net: use indirect call helpers for dst_input Brian Vazquez
@ 2020-12-11 7:57 ` kernel test robot
0 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2020-12-11 7:57 UTC (permalink / raw)
To: Brian Vazquez, Brian Vazquez, Eric Dumazet, David S . Miller
Cc: kbuild-all, linux-kernel, netdev
[-- Attachment #1: Type: text/plain, Size: 1261 bytes --]
Hi Brian,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on net-next/master]
url: https://github.com/0day-ci/linux/commits/Brian-Vazquez/net-avoid-indirect-calls-in-dst-functions/20201211-100941
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 51e13685bd93654e0e9b2559c8e103d6545ddf95
config: x86_64-randconfig-a011-20201209 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/f63e8ffacedd4f9e322d6deaf20adacf4c9e3c87
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Brian-Vazquez/net-avoid-indirect-calls-in-dst-functions/20201211-100941
git checkout f63e8ffacedd4f9e322d6deaf20adacf4c9e3c87
# save the attached .config to linux build tree
make W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>, old ones prefixed by <<):
>> ERROR: modpost: "ip_local_deliver" [net/decnet/decnet.ko] undefined!
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 37842 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net-next 2/4] net: use indirect call helpers for dst_output
2020-12-11 1:58 ` [PATCH net-next 2/4] net: use indirect call helpers for dst_output Brian Vazquez
@ 2020-12-11 10:23 ` kernel test robot
0 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2020-12-11 10:23 UTC (permalink / raw)
To: Brian Vazquez, Brian Vazquez, Eric Dumazet, David S . Miller
Cc: kbuild-all, linux-kernel, netdev
[-- Attachment #1: Type: text/plain, Size: 1389 bytes --]
Hi Brian,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on net-next/master]
url: https://github.com/0day-ci/linux/commits/Brian-Vazquez/net-avoid-indirect-calls-in-dst-functions/20201211-100941
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 51e13685bd93654e0e9b2559c8e103d6545ddf95
config: x86_64-randconfig-a011-20201209 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/fdc06a361d26c1fda6387e9ce0ac220cbcc1b32a
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Brian-Vazquez/net-avoid-indirect-calls-in-dst-functions/20201211-100941
git checkout fdc06a361d26c1fda6387e9ce0ac220cbcc1b32a
# save the attached .config to linux build tree
make W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>, old ones prefixed by <<):
>> ERROR: modpost: "ip6_output" [net/decnet/decnet.ko] undefined!
ERROR: modpost: "ip_local_deliver" [net/decnet/decnet.ko] undefined!
>> ERROR: modpost: "ip_output" [net/decnet/decnet.ko] undefined!
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 37842 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-12-11 10:26 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-11 1:58 [PATCH net-next 0/4] net: avoid indirect calls in dst functions Brian Vazquez
2020-12-11 1:58 ` [PATCH net-next 1/4] net: use indirect call helpers for dst_input Brian Vazquez
2020-12-11 7:57 ` kernel test robot
2020-12-11 1:58 ` [PATCH net-next 2/4] net: use indirect call helpers for dst_output Brian Vazquez
2020-12-11 10:23 ` kernel test robot
2020-12-11 1:58 ` [PATCH net-next 3/4] net: use indirect call helpers for dst_mtu Brian Vazquez
2020-12-11 1:58 ` [PATCH net-next 4/4] net: indirect call helpers for ipv4/ipv6 dst_check functions Brian Vazquez
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).