File tree 3 files changed +11
-5
lines changed 3 files changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -158,7 +158,7 @@ config X86
158
158
select HAVE_ALIGNED_STRUCT_PAGE if SLUB
159
159
select HAVE_ARCH_AUDITSYSCALL
160
160
select HAVE_ARCH_HUGE_VMAP if X86_64 || X86_PAE
161
- select HAVE_ARCH_HUGE_VMALLOC if HAVE_ARCH_HUGE_VMAP
161
+ select HAVE_ARCH_HUGE_VMALLOC if X86_64
162
162
select HAVE_ARCH_JUMP_LABEL
163
163
select HAVE_ARCH_JUMP_LABEL_RELATIVE
164
164
select HAVE_ARCH_KASAN if X86_64
Original file line number Diff line number Diff line change @@ -2330,8 +2330,11 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)
2330
2330
if (proglen <= 0 ) {
2331
2331
out_image :
2332
2332
image = NULL ;
2333
- if (header )
2333
+ if (header ) {
2334
+ bpf_arch_text_copy (& header -> size , & rw_header -> size ,
2335
+ sizeof (rw_header -> size ));
2334
2336
bpf_jit_binary_pack_free (header , rw_header );
2337
+ }
2335
2338
prog = orig_prog ;
2336
2339
goto out_addrs ;
2337
2340
}
Original file line number Diff line number Diff line change @@ -1112,13 +1112,16 @@ int bpf_jit_binary_pack_finalize(struct bpf_prog *prog,
1112
1112
* 1) when the program is freed after;
1113
1113
* 2) when the JIT engine fails (before bpf_jit_binary_pack_finalize).
1114
1114
* For case 2), we need to free both the RO memory and the RW buffer.
1115
- * Also, ro_header->size in 2) is not properly set yet, so rw_header->size
1116
- * is used for uncharge.
1115
+ *
1116
+ * bpf_jit_binary_pack_free requires proper ro_header->size. However,
1117
+ * bpf_jit_binary_pack_alloc does not set it. Therefore, ro_header->size
1118
+ * must be set with either bpf_jit_binary_pack_finalize (normal path) or
1119
+ * bpf_arch_text_copy (when jit fails).
1117
1120
*/
1118
1121
void bpf_jit_binary_pack_free (struct bpf_binary_header * ro_header ,
1119
1122
struct bpf_binary_header * rw_header )
1120
1123
{
1121
- u32 size = rw_header ? rw_header -> size : ro_header -> size ;
1124
+ u32 size = ro_header -> size ;
1122
1125
1123
1126
bpf_prog_pack_free (ro_header );
1124
1127
kvfree (rw_header );
You can’t perform that action at this time.
0 commit comments