diff options
Diffstat (limited to 'arch/powerpc/net/bpf_jit_comp.c')
-rw-r--r-- | arch/powerpc/net/bpf_jit_comp.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/powerpc/net/bpf_jit_comp.c b/arch/powerpc/net/bpf_jit_comp.c index 555034f8505e..808ce1cae21a 100644 --- a/arch/powerpc/net/bpf_jit_comp.c +++ b/arch/powerpc/net/bpf_jit_comp.c | |||
@@ -390,9 +390,9 @@ static int bpf_jit_build_body(struct sk_filter *fp, u32 *image, | |||
390 | mark)); | 390 | mark)); |
391 | break; | 391 | break; |
392 | case BPF_S_ANC_RXHASH: | 392 | case BPF_S_ANC_RXHASH: |
393 | BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, rxhash) != 4); | 393 | BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, hash) != 4); |
394 | PPC_LWZ_OFFS(r_A, r_skb, offsetof(struct sk_buff, | 394 | PPC_LWZ_OFFS(r_A, r_skb, offsetof(struct sk_buff, |
395 | rxhash)); | 395 | hash)); |
396 | break; | 396 | break; |
397 | case BPF_S_ANC_VLAN_TAG: | 397 | case BPF_S_ANC_VLAN_TAG: |
398 | case BPF_S_ANC_VLAN_TAG_PRESENT: | 398 | case BPF_S_ANC_VLAN_TAG_PRESENT: |
@@ -689,6 +689,7 @@ void bpf_jit_compile(struct sk_filter *fp) | |||
689 | ((u64 *)image)[0] = (u64)code_base; | 689 | ((u64 *)image)[0] = (u64)code_base; |
690 | ((u64 *)image)[1] = local_paca->kernel_toc; | 690 | ((u64 *)image)[1] = local_paca->kernel_toc; |
691 | fp->bpf_func = (void *)image; | 691 | fp->bpf_func = (void *)image; |
692 | fp->jited = 1; | ||
692 | } | 693 | } |
693 | out: | 694 | out: |
694 | kfree(addrs); | 695 | kfree(addrs); |
@@ -697,7 +698,7 @@ out: | |||
697 | 698 | ||
698 | void bpf_jit_free(struct sk_filter *fp) | 699 | void bpf_jit_free(struct sk_filter *fp) |
699 | { | 700 | { |
700 | if (fp->bpf_func != sk_run_filter) | 701 | if (fp->jited) |
701 | module_free(NULL, fp->bpf_func); | 702 | module_free(NULL, fp->bpf_func); |
702 | kfree(fp); | 703 | kfree(fp); |
703 | } | 704 | } |