| From 0fa963553a5c28d8f8aabd8878326d3f782045fc Mon Sep 17 00:00:00 2001 |
| From: Michael Holzheu <holzheu@linux.vnet.ibm.com> |
| Date: Thu, 12 May 2016 18:10:48 +0200 |
| Subject: s390/bpf: reduce maximum program size to 64 KB |
| |
| From: Michael Holzheu <holzheu@linux.vnet.ibm.com> |
| |
| commit 0fa963553a5c28d8f8aabd8878326d3f782045fc upstream. |
| |
| The s390 BFP compiler currently uses relative branch instructions |
| that only support jumps up to 64 KB. Examples are "j", "jnz", "cgrj", |
| etc. Currently the maximum size of s390 BPF programs is set |
| to 0x7ffff. If branches over 64 KB are generated the, kernel can |
| crash due to incorrect code. |
| |
| So fix this an reduce the maximum size to 64 KB. Programs larger than |
| that will be interpreted. |
| |
| Fixes: ce2b6ad9c185 ("s390/bpf: increase BPF_SIZE_MAX") |
| Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com> |
| Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/s390/net/bpf_jit_comp.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/s390/net/bpf_jit_comp.c |
| +++ b/arch/s390/net/bpf_jit_comp.c |
| @@ -45,7 +45,7 @@ struct bpf_jit { |
| int labels[1]; /* Labels for local jumps */ |
| }; |
| |
| -#define BPF_SIZE_MAX 0x7ffff /* Max size for program (20 bit signed displ) */ |
| +#define BPF_SIZE_MAX 0xffff /* Max size for program (16 bit branches) */ |
| |
| #define SEEN_SKB 1 /* skb access */ |
| #define SEEN_MEM 2 /* use mem[] for temporary storage */ |