aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/net/bpf_jit_comp.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc/net/bpf_jit_comp.c')
-rw-r--r--arch/sparc/net/bpf_jit_comp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/sparc/net/bpf_jit_comp.c b/arch/sparc/net/bpf_jit_comp.c
index 01fe9946d388..a82c6b2a9780 100644
--- a/arch/sparc/net/bpf_jit_comp.c
+++ b/arch/sparc/net/bpf_jit_comp.c
@@ -618,7 +618,7 @@ void bpf_jit_compile(struct sk_filter *fp)
618 emit_load16(r_A, struct net_device, type, r_A); 618 emit_load16(r_A, struct net_device, type, r_A);
619 break; 619 break;
620 case BPF_S_ANC_RXHASH: 620 case BPF_S_ANC_RXHASH:
621 emit_skb_load32(rxhash, r_A); 621 emit_skb_load32(hash, r_A);
622 break; 622 break;
623 case BPF_S_ANC_VLAN_TAG: 623 case BPF_S_ANC_VLAN_TAG:
624 case BPF_S_ANC_VLAN_TAG_PRESENT: 624 case BPF_S_ANC_VLAN_TAG_PRESENT:
@@ -809,6 +809,7 @@ cond_branch: f_offset = addrs[i + filter[i].jf];
809 if (image) { 809 if (image) {
810 bpf_flush_icache(image, image + proglen); 810 bpf_flush_icache(image, image + proglen);
811 fp->bpf_func = (void *)image; 811 fp->bpf_func = (void *)image;
812 fp->jited = 1;
812 } 813 }
813out: 814out:
814 kfree(addrs); 815 kfree(addrs);
@@ -817,7 +818,7 @@ out:
817 818
818void bpf_jit_free(struct sk_filter *fp) 819void bpf_jit_free(struct sk_filter *fp)
819{ 820{
820 if (fp->bpf_func != sk_run_filter) 821 if (fp->jited)
821 module_free(NULL, fp->bpf_func); 822 module_free(NULL, fp->bpf_func);
822 kfree(fp); 823 kfree(fp);
823} 824}