|
@@ -194,6 +194,7 @@ struct verifier_env {
|
|
struct verifier_state_list **explored_states; /* search pruning optimization */
|
|
struct verifier_state_list **explored_states; /* search pruning optimization */
|
|
struct bpf_map *used_maps[MAX_USED_MAPS]; /* array of map's used by eBPF program */
|
|
struct bpf_map *used_maps[MAX_USED_MAPS]; /* array of map's used by eBPF program */
|
|
u32 used_map_cnt; /* number of used maps */
|
|
u32 used_map_cnt; /* number of used maps */
|
|
|
|
+ u32 id_gen; /* used to generate unique reg IDs */
|
|
bool allow_ptr_leaks;
|
|
bool allow_ptr_leaks;
|
|
};
|
|
};
|
|
|
|
|
|
@@ -1301,7 +1302,7 @@ add_imm:
|
|
/* dst_reg stays as pkt_ptr type and since some positive
|
|
/* dst_reg stays as pkt_ptr type and since some positive
|
|
* integer value was added to the pointer, increment its 'id'
|
|
* integer value was added to the pointer, increment its 'id'
|
|
*/
|
|
*/
|
|
- dst_reg->id++;
|
|
|
|
|
|
+ dst_reg->id = ++env->id_gen;
|
|
|
|
|
|
/* something was added to pkt_ptr, set range and off to zero */
|
|
/* something was added to pkt_ptr, set range and off to zero */
|
|
dst_reg->off = 0;
|
|
dst_reg->off = 0;
|