Message ID | 1404373932-10929-1-git-send-email-zlim.lnx@gmail.com |
---|---|
State | New |
Headers | show |
Hi Zi, On 07/03/2014 09:52 AM, Zi Shen Lim wrote: > load_pointer() is already a static inline function. > Let's move it into filter.h so BPF JIT implementations can reuse this > function. > > Signed-off-by: Zi Shen Lim <zlim.lnx@gmail.com> > --- > This patch is based on discussion with Alexei in the context of > reusing load_pointer for upcoming arm64 BPF JIT compiler. [1] > > Compile tested on x86_64 and arm64. > > [1] https://lkml.org/lkml/2014/7/3/14 > > include/linux/filter.h | 13 +++++++++++++ > net/core/filter.c | 9 --------- > 2 files changed, 13 insertions(+), 9 deletions(-) > > diff --git a/include/linux/filter.h b/include/linux/filter.h > index a7e3c48..2288e31 100644 > --- a/include/linux/filter.h > +++ b/include/linux/filter.h > @@ -6,6 +6,7 @@ > > #include <linux/atomic.h> > #include <linux/compat.h> > +#include <linux/skbuff.h> > #include <linux/workqueue.h> > #include <uapi/linux/filter.h> > > @@ -406,6 +407,18 @@ static inline u16 bpf_anc_helper(const struct sock_filter *ftest) > } > } > > +void *bpf_internal_load_pointer_neg_helper(const struct sk_buff *skb, > + int k, unsigned int size); > + > +static inline void *load_pointer(const struct sk_buff *skb, int k, > + unsigned int size, void *buffer) > +{ Fine by me, but since you're exporting this into a header, please give this a more specific name, such as bpf_load_pointer(), for example. Thanks, Daniel -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
On Thu, Jul 3, 2014 at 1:10 AM, Daniel Borkmann <dborkman@redhat.com> wrote: > Hi Zi, > > > On 07/03/2014 09:52 AM, Zi Shen Lim wrote: >> >> load_pointer() is already a static inline function. >> Let's move it into filter.h so BPF JIT implementations can reuse this >> function. >> >> Signed-off-by: Zi Shen Lim <zlim.lnx@gmail.com> >> --- >> This patch is based on discussion with Alexei in the context of >> reusing load_pointer for upcoming arm64 BPF JIT compiler. [1] >> >> Compile tested on x86_64 and arm64. >> >> [1] https://lkml.org/lkml/2014/7/3/14 >> >> include/linux/filter.h | 13 +++++++++++++ >> net/core/filter.c | 9 --------- >> 2 files changed, 13 insertions(+), 9 deletions(-) >> >> diff --git a/include/linux/filter.h b/include/linux/filter.h >> index a7e3c48..2288e31 100644 >> --- a/include/linux/filter.h >> +++ b/include/linux/filter.h >> @@ -6,6 +6,7 @@ >> >> #include <linux/atomic.h> >> #include <linux/compat.h> >> +#include <linux/skbuff.h> >> #include <linux/workqueue.h> >> #include <uapi/linux/filter.h> >> >> @@ -406,6 +407,18 @@ static inline u16 bpf_anc_helper(const struct >> sock_filter *ftest) >> } >> } >> >> +void *bpf_internal_load_pointer_neg_helper(const struct sk_buff *skb, >> + int k, unsigned int size); >> + >> +static inline void *load_pointer(const struct sk_buff *skb, int k, >> + unsigned int size, void *buffer) >> +{ > > > Fine by me, but since you're exporting this into a header, > please give this a more specific name, such as bpf_load_pointer(), > for example. Daniel, thanks for the suggestion. I'll send out v2 shortly. > > Thanks, > > Daniel -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
diff --git a/include/linux/filter.h b/include/linux/filter.h index a7e3c48..2288e31 100644 --- a/include/linux/filter.h +++ b/include/linux/filter.h @@ -6,6 +6,7 @@ #include <linux/atomic.h> #include <linux/compat.h> +#include <linux/skbuff.h> #include <linux/workqueue.h> #include <uapi/linux/filter.h> @@ -406,6 +407,18 @@ static inline u16 bpf_anc_helper(const struct sock_filter *ftest) } } +void *bpf_internal_load_pointer_neg_helper(const struct sk_buff *skb, + int k, unsigned int size); + +static inline void *load_pointer(const struct sk_buff *skb, int k, + unsigned int size, void *buffer) +{ + if (k >= 0) + return skb_header_pointer(skb, k, size, buffer); + + return bpf_internal_load_pointer_neg_helper(skb, k, size); +} + #ifdef CONFIG_BPF_JIT #include <stdarg.h> #include <linux/linkage.h> diff --git a/net/core/filter.c b/net/core/filter.c index 1dbf646..1c726ea 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -84,15 +84,6 @@ void *bpf_internal_load_pointer_neg_helper(const struct sk_buff *skb, int k, uns return NULL; } -static inline void *load_pointer(const struct sk_buff *skb, int k, - unsigned int size, void *buffer) -{ - if (k >= 0) - return skb_header_pointer(skb, k, size, buffer); - - return bpf_internal_load_pointer_neg_helper(skb, k, size); -} - /** * sk_filter - run a packet through a socket filter * @sk: sock associated with &sk_buff
load_pointer() is already a static inline function. Let's move it into filter.h so BPF JIT implementations can reuse this function. Signed-off-by: Zi Shen Lim <zlim.lnx@gmail.com> --- This patch is based on discussion with Alexei in the context of reusing load_pointer for upcoming arm64 BPF JIT compiler. [1] Compile tested on x86_64 and arm64. [1] https://lkml.org/lkml/2014/7/3/14 include/linux/filter.h | 13 +++++++++++++ net/core/filter.c | 9 --------- 2 files changed, 13 insertions(+), 9 deletions(-)