• Home
  • Raw
  • Download

Lines Matching refs:data

161 static void handle_overflow(struct overflow_data *data, void *lhs,  in handle_overflow()  argument
165 struct type_descriptor *type = data->type; in handle_overflow()
169 if (suppress_report(&data->location)) in handle_overflow()
172 ubsan_prologue(&data->location); in handle_overflow()
187 void __ubsan_handle_add_overflow(struct overflow_data *data, in __ubsan_handle_add_overflow() argument
191 handle_overflow(data, lhs, rhs, '+'); in __ubsan_handle_add_overflow()
195 void __ubsan_handle_sub_overflow(struct overflow_data *data, in __ubsan_handle_sub_overflow() argument
198 handle_overflow(data, lhs, rhs, '-'); in __ubsan_handle_sub_overflow()
202 void __ubsan_handle_mul_overflow(struct overflow_data *data, in __ubsan_handle_mul_overflow() argument
205 handle_overflow(data, lhs, rhs, '*'); in __ubsan_handle_mul_overflow()
209 void __ubsan_handle_negate_overflow(struct overflow_data *data, in __ubsan_handle_negate_overflow() argument
214 if (suppress_report(&data->location)) in __ubsan_handle_negate_overflow()
217 ubsan_prologue(&data->location); in __ubsan_handle_negate_overflow()
219 val_to_string(old_val_str, sizeof(old_val_str), data->type, old_val); in __ubsan_handle_negate_overflow()
222 old_val_str, data->type->type_name); in __ubsan_handle_negate_overflow()
229 void __ubsan_handle_divrem_overflow(struct overflow_data *data, in __ubsan_handle_divrem_overflow() argument
234 if (suppress_report(&data->location)) in __ubsan_handle_divrem_overflow()
237 ubsan_prologue(&data->location); in __ubsan_handle_divrem_overflow()
239 val_to_string(rhs_val_str, sizeof(rhs_val_str), data->type, rhs); in __ubsan_handle_divrem_overflow()
241 if (type_is_signed(data->type) && get_signed_val(data->type, rhs) == -1) in __ubsan_handle_divrem_overflow()
243 rhs_val_str, data->type->type_name); in __ubsan_handle_divrem_overflow()
251 static void handle_null_ptr_deref(struct type_mismatch_data_common *data) in handle_null_ptr_deref() argument
253 if (suppress_report(data->location)) in handle_null_ptr_deref()
256 ubsan_prologue(data->location); in handle_null_ptr_deref()
259 type_check_kinds[data->type_check_kind], in handle_null_ptr_deref()
260 data->type->type_name); in handle_null_ptr_deref()
265 static void handle_misaligned_access(struct type_mismatch_data_common *data, in handle_misaligned_access() argument
268 if (suppress_report(data->location)) in handle_misaligned_access()
271 ubsan_prologue(data->location); in handle_misaligned_access()
274 type_check_kinds[data->type_check_kind], in handle_misaligned_access()
275 (void *)ptr, data->type->type_name); in handle_misaligned_access()
276 pr_err("which requires %ld byte alignment\n", data->alignment); in handle_misaligned_access()
281 static void handle_object_size_mismatch(struct type_mismatch_data_common *data, in handle_object_size_mismatch() argument
284 if (suppress_report(data->location)) in handle_object_size_mismatch()
287 ubsan_prologue(data->location); in handle_object_size_mismatch()
289 type_check_kinds[data->type_check_kind], in handle_object_size_mismatch()
291 pr_err("for an object of type %s\n", data->type->type_name); in handle_object_size_mismatch()
295 static void ubsan_type_mismatch_common(struct type_mismatch_data_common *data, in ubsan_type_mismatch_common() argument
301 handle_null_ptr_deref(data); in ubsan_type_mismatch_common()
302 else if (data->alignment && !IS_ALIGNED(ptr, data->alignment)) in ubsan_type_mismatch_common()
303 handle_misaligned_access(data, ptr); in ubsan_type_mismatch_common()
305 handle_object_size_mismatch(data, ptr); in ubsan_type_mismatch_common()
310 void __ubsan_handle_type_mismatch(struct type_mismatch_data *data, in __ubsan_handle_type_mismatch() argument
314 .location = &data->location, in __ubsan_handle_type_mismatch()
315 .type = data->type, in __ubsan_handle_type_mismatch()
316 .alignment = data->alignment, in __ubsan_handle_type_mismatch()
317 .type_check_kind = data->type_check_kind in __ubsan_handle_type_mismatch()
324 void __ubsan_handle_type_mismatch_v1(struct type_mismatch_data_v1 *data, in __ubsan_handle_type_mismatch_v1() argument
329 .location = &data->location, in __ubsan_handle_type_mismatch_v1()
330 .type = data->type, in __ubsan_handle_type_mismatch_v1()
331 .alignment = 1UL << data->log_alignment, in __ubsan_handle_type_mismatch_v1()
332 .type_check_kind = data->type_check_kind in __ubsan_handle_type_mismatch_v1()
339 void __ubsan_handle_out_of_bounds(struct out_of_bounds_data *data, void *index) in __ubsan_handle_out_of_bounds() argument
343 if (suppress_report(&data->location)) in __ubsan_handle_out_of_bounds()
346 ubsan_prologue(&data->location); in __ubsan_handle_out_of_bounds()
348 val_to_string(index_str, sizeof(index_str), data->index_type, index); in __ubsan_handle_out_of_bounds()
350 data->array_type->type_name); in __ubsan_handle_out_of_bounds()
355 void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data, in __ubsan_handle_shift_out_of_bounds() argument
358 struct type_descriptor *rhs_type = data->rhs_type; in __ubsan_handle_shift_out_of_bounds()
359 struct type_descriptor *lhs_type = data->lhs_type; in __ubsan_handle_shift_out_of_bounds()
364 if (suppress_report(&data->location)) in __ubsan_handle_shift_out_of_bounds()
367 ubsan_prologue(&data->location); in __ubsan_handle_shift_out_of_bounds()
397 void __ubsan_handle_builtin_unreachable(struct unreachable_data *data) in __ubsan_handle_builtin_unreachable() argument
399 ubsan_prologue(&data->location); in __ubsan_handle_builtin_unreachable()
406 void __ubsan_handle_load_invalid_value(struct invalid_value_data *data, in __ubsan_handle_load_invalid_value() argument
411 if (suppress_report(&data->location)) in __ubsan_handle_load_invalid_value()
414 ubsan_prologue(&data->location); in __ubsan_handle_load_invalid_value()
416 val_to_string(val_str, sizeof(val_str), data->type, val); in __ubsan_handle_load_invalid_value()
419 val_str, data->type->type_name); in __ubsan_handle_load_invalid_value()