diff --git a/net/core/filter.c b/net/core/filter.c index b3f21751b2386a6deb224c41fd005e4d5da9fc47..735fad89749630b71b2b64d6c82d59fec60a7c7f 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -537,7 +537,7 @@ static unsigned int __sk_run_filter(void *ctx, const struct sock_filter_int *ins * BPF_R0 - 8/16/32-bit skb data converted to cpu endianness */ - ptr = load_pointer((struct sk_buff *) CTX, off, 4, &tmp); + ptr = load_pointer((struct sk_buff *) (unsigned long) CTX, off, 4, &tmp); if (likely(ptr != NULL)) { BPF_R0 = get_unaligned_be32(ptr); CONT; @@ -547,7 +547,7 @@ static unsigned int __sk_run_filter(void *ctx, const struct sock_filter_int *ins LD_ABS_H: /* BPF_R0 = ntohs(*(u16 *) (skb->data + imm32)) */ off = IMM; load_half: - ptr = load_pointer((struct sk_buff *) CTX, off, 2, &tmp); + ptr = load_pointer((struct sk_buff *) (unsigned long) CTX, off, 2, &tmp); if (likely(ptr != NULL)) { BPF_R0 = get_unaligned_be16(ptr); CONT; @@ -557,7 +557,7 @@ static unsigned int __sk_run_filter(void *ctx, const struct sock_filter_int *ins LD_ABS_B: /* BPF_R0 = *(u8 *) (skb->data + imm32) */ off = IMM; load_byte: - ptr = load_pointer((struct sk_buff *) CTX, off, 1, &tmp); + ptr = load_pointer((struct sk_buff *) (unsigned long) CTX, off, 1, &tmp); if (likely(ptr != NULL)) { BPF_R0 = *(u8 *)ptr; CONT;