aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
Diffstat (limited to 'net/core')
-rw-r--r--net/core/filter.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/net/core/filter.c b/net/core/filter.c
index 1dbf6462f766..87af1e3e56c0 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
84 return NULL; 84 return NULL;
85} 85}
86 86
87static inline void *load_pointer(const struct sk_buff *skb, int k,
88 unsigned int size, void *buffer)
89{
90 if (k >= 0)
91 return skb_header_pointer(skb, k, size, buffer);
92
93 return bpf_internal_load_pointer_neg_helper(skb, k, size);
94}
95
96/** 87/**
97 * sk_filter - run a packet through a socket filter 88 * sk_filter - run a packet through a socket filter
98 * @sk: sock associated with &sk_buff 89 * @sk: sock associated with &sk_buff
@@ -537,7 +528,7 @@ load_word:
537 * BPF_R0 - 8/16/32-bit skb data converted to cpu endianness 528 * BPF_R0 - 8/16/32-bit skb data converted to cpu endianness
538 */ 529 */
539 530
540 ptr = load_pointer((struct sk_buff *) (unsigned long) CTX, off, 4, &tmp); 531 ptr = bpf_load_pointer((struct sk_buff *) (unsigned long) CTX, off, 4, &tmp);
541 if (likely(ptr != NULL)) { 532 if (likely(ptr != NULL)) {
542 BPF_R0 = get_unaligned_be32(ptr); 533 BPF_R0 = get_unaligned_be32(ptr);
543 CONT; 534 CONT;
@@ -547,7 +538,7 @@ load_word:
547 LD_ABS_H: /* BPF_R0 = ntohs(*(u16 *) (skb->data + imm32)) */ 538 LD_ABS_H: /* BPF_R0 = ntohs(*(u16 *) (skb->data + imm32)) */
548 off = IMM; 539 off = IMM;
549load_half: 540load_half:
550 ptr = load_pointer((struct sk_buff *) (unsigned long) CTX, off, 2, &tmp); 541 ptr = bpf_load_pointer((struct sk_buff *) (unsigned long) CTX, off, 2, &tmp);
551 if (likely(ptr != NULL)) { 542 if (likely(ptr != NULL)) {
552 BPF_R0 = get_unaligned_be16(ptr); 543 BPF_R0 = get_unaligned_be16(ptr);
553 CONT; 544 CONT;
@@ -557,7 +548,7 @@ load_half:
557 LD_ABS_B: /* BPF_R0 = *(u8 *) (skb->data + imm32) */ 548 LD_ABS_B: /* BPF_R0 = *(u8 *) (skb->data + imm32) */
558 off = IMM; 549 off = IMM;
559load_byte: 550load_byte:
560 ptr = load_pointer((struct sk_buff *) (unsigned long) CTX, off, 1, &tmp); 551 ptr = bpf_load_pointer((struct sk_buff *) (unsigned long) CTX, off, 1, &tmp);
561 if (likely(ptr != NULL)) { 552 if (likely(ptr != NULL)) {
562 BPF_R0 = *(u8 *)ptr; 553 BPF_R0 = *(u8 *)ptr;
563 CONT; 554 CONT;