Skip to content

Commit a1dcca7

Browse files
AsafEitanirafaeldtinoco
authored andcommitted
fix: satisfy verifier on kernel 5.4
1 parent 1f67247 commit a1dcca7

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

pkg/ebpf/c/tracee.bpf.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1750,10 +1750,9 @@ static __always_inline int save_str_to_buf(event_data_t *data, void *ptr, u8 ind
17501750
}
17511751

17521752
static __always_inline int
1753-
add_u64_elements_to_buf(event_data_t *data, const u64 __user *ptr, int len, u32 count_off)
1753+
add_u64_elements_to_buf(event_data_t *data, const u64 __user *ptr, int len, volatile u32 count_off)
17541754
{
17551755
u8 elem_num = 0;
1756-
u8 current_elem_num;
17571756
#pragma unroll
17581757
for (int i = 0; i < len; i++) {
17591758
void *addr = &(data->submit_p->buf[data->buf_off]);
@@ -1767,7 +1766,11 @@ add_u64_elements_to_buf(event_data_t *data, const u64 __user *ptr, int len, u32
17671766
}
17681767
out:
17691768
// save number of elements in the array
1770-
current_elem_num = data->submit_p->buf[count_off & (MAX_PERCPU_BUFSIZE - 1)];
1769+
if (count_off > (MAX_PERCPU_BUFSIZE - 1))
1770+
return 0;
1771+
if (count_off < 0)
1772+
return 0;
1773+
u8 current_elem_num = data->submit_p->buf[count_off & (MAX_PERCPU_BUFSIZE - 1)];
17711774
data->submit_p->buf[count_off & (MAX_PERCPU_BUFSIZE - 1)] = current_elem_num + elem_num;
17721775

17731776
return 1;
@@ -1782,7 +1785,7 @@ save_u64_arr_to_buf(event_data_t *data, const u64 __user *ptr, int len, u8 index
17821785

17831786
// Save space for number of elements (1 byte)
17841787
data->buf_off += 1;
1785-
u32 orig_off = data->buf_off;
1788+
volatile u32 orig_off = data->buf_off;
17861789
data->submit_p->buf[(data->buf_off) & (MAX_PERCPU_BUFSIZE - 1)] = 0;
17871790
data->buf_off += 1;
17881791
data->context.argnum++;

0 commit comments

Comments
 (0)