Print this page
11506 smatch resync

*** 17,26 **** --- 17,28 ---- #include "smatch.h" #include "smatch_extra.h" static int my_id; + extern int second_half_id; + extern void set_spectre_first_half(struct expression *expr); static int suppress_multiple = 1; static int is_write(struct expression *expr) {
*** 163,174 **** return; if (is_harmless(expr)) return; array_expr = get_array_base(expr); ! if (suppress_multiple && is_ignored_expr(my_id, array_expr)) return; offset = get_array_offset(expr); if (!is_user_rl(offset)) return; if (is_nospec(offset)) --- 165,178 ---- return; if (is_harmless(expr)) return; array_expr = get_array_base(expr); ! if (suppress_multiple && is_ignored_expr(my_id, array_expr)) { ! set_spectre_first_half(expr); return; + } offset = get_array_offset(expr); if (!is_user_rl(offset)) return; if (is_nospec(offset))
*** 190,199 **** --- 194,205 ---- name = expr_to_str(array_expr); sm_warning("potential spectre issue '%s' [%s]%s", name, is_read(expr) ? "r" : "w", conditions ? " (local cap)" : ""); + + set_spectre_first_half(expr); if (suppress_multiple) add_ignore_expr(my_id, array_expr); free_string(name); }