• Home
  • Raw
  • Download

Lines Matching refs:data

173 static void handle_overflow(struct overflow_data *data, void *lhs,  in handle_overflow()  argument
177 struct type_descriptor *type = data->type; in handle_overflow()
182 if (suppress_report(&data->location)) in handle_overflow()
185 ubsan_prologue(&data->location, &flags); in handle_overflow()
200 void __ubsan_handle_add_overflow(struct overflow_data *data, in __ubsan_handle_add_overflow() argument
204 handle_overflow(data, lhs, rhs, '+'); in __ubsan_handle_add_overflow()
208 void __ubsan_handle_sub_overflow(struct overflow_data *data, in __ubsan_handle_sub_overflow() argument
211 handle_overflow(data, lhs, rhs, '-'); in __ubsan_handle_sub_overflow()
215 void __ubsan_handle_mul_overflow(struct overflow_data *data, in __ubsan_handle_mul_overflow() argument
218 handle_overflow(data, lhs, rhs, '*'); in __ubsan_handle_mul_overflow()
222 void __ubsan_handle_negate_overflow(struct overflow_data *data, in __ubsan_handle_negate_overflow() argument
228 if (suppress_report(&data->location)) in __ubsan_handle_negate_overflow()
231 ubsan_prologue(&data->location, &flags); in __ubsan_handle_negate_overflow()
233 val_to_string(old_val_str, sizeof(old_val_str), data->type, old_val); in __ubsan_handle_negate_overflow()
236 old_val_str, data->type->type_name); in __ubsan_handle_negate_overflow()
243 void __ubsan_handle_divrem_overflow(struct overflow_data *data, in __ubsan_handle_divrem_overflow() argument
249 if (suppress_report(&data->location)) in __ubsan_handle_divrem_overflow()
252 ubsan_prologue(&data->location, &flags); in __ubsan_handle_divrem_overflow()
254 val_to_string(rhs_val_str, sizeof(rhs_val_str), data->type, rhs); in __ubsan_handle_divrem_overflow()
256 if (type_is_signed(data->type) && get_signed_val(data->type, rhs) == -1) in __ubsan_handle_divrem_overflow()
258 rhs_val_str, data->type->type_name); in __ubsan_handle_divrem_overflow()
266 static void handle_null_ptr_deref(struct type_mismatch_data_common *data) in handle_null_ptr_deref() argument
270 if (suppress_report(data->location)) in handle_null_ptr_deref()
273 ubsan_prologue(data->location, &flags); in handle_null_ptr_deref()
276 type_check_kinds[data->type_check_kind], in handle_null_ptr_deref()
277 data->type->type_name); in handle_null_ptr_deref()
282 static void handle_misaligned_access(struct type_mismatch_data_common *data, in handle_misaligned_access() argument
287 if (suppress_report(data->location)) in handle_misaligned_access()
290 ubsan_prologue(data->location, &flags); in handle_misaligned_access()
293 type_check_kinds[data->type_check_kind], in handle_misaligned_access()
294 (void *)ptr, data->type->type_name); in handle_misaligned_access()
295 pr_err("which requires %ld byte alignment\n", data->alignment); in handle_misaligned_access()
300 static void handle_object_size_mismatch(struct type_mismatch_data_common *data, in handle_object_size_mismatch() argument
305 if (suppress_report(data->location)) in handle_object_size_mismatch()
308 ubsan_prologue(data->location, &flags); in handle_object_size_mismatch()
310 type_check_kinds[data->type_check_kind], in handle_object_size_mismatch()
312 pr_err("for an object of type %s\n", data->type->type_name); in handle_object_size_mismatch()
316 static void ubsan_type_mismatch_common(struct type_mismatch_data_common *data, in ubsan_type_mismatch_common() argument
321 handle_null_ptr_deref(data); in ubsan_type_mismatch_common()
322 else if (data->alignment && !IS_ALIGNED(ptr, data->alignment)) in ubsan_type_mismatch_common()
323 handle_misaligned_access(data, ptr); in ubsan_type_mismatch_common()
325 handle_object_size_mismatch(data, ptr); in ubsan_type_mismatch_common()
328 void __ubsan_handle_type_mismatch(struct type_mismatch_data *data, in __ubsan_handle_type_mismatch() argument
332 .location = &data->location, in __ubsan_handle_type_mismatch()
333 .type = data->type, in __ubsan_handle_type_mismatch()
334 .alignment = data->alignment, in __ubsan_handle_type_mismatch()
335 .type_check_kind = data->type_check_kind in __ubsan_handle_type_mismatch()
342 void __ubsan_handle_type_mismatch_v1(struct type_mismatch_data_v1 *data, in __ubsan_handle_type_mismatch_v1() argument
347 .location = &data->location, in __ubsan_handle_type_mismatch_v1()
348 .type = data->type, in __ubsan_handle_type_mismatch_v1()
349 .alignment = 1UL << data->log_alignment, in __ubsan_handle_type_mismatch_v1()
350 .type_check_kind = data->type_check_kind in __ubsan_handle_type_mismatch_v1()
357 void __ubsan_handle_nonnull_return(struct nonnull_return_data *data) in __ubsan_handle_nonnull_return() argument
361 if (suppress_report(&data->location)) in __ubsan_handle_nonnull_return()
364 ubsan_prologue(&data->location, &flags); in __ubsan_handle_nonnull_return()
368 if (location_is_valid(&data->attr_location)) in __ubsan_handle_nonnull_return()
370 &data->attr_location); in __ubsan_handle_nonnull_return()
376 void __ubsan_handle_vla_bound_not_positive(struct vla_bound_data *data, in __ubsan_handle_vla_bound_not_positive() argument
382 if (suppress_report(&data->location)) in __ubsan_handle_vla_bound_not_positive()
385 ubsan_prologue(&data->location, &flags); in __ubsan_handle_vla_bound_not_positive()
387 val_to_string(bound_str, sizeof(bound_str), data->type, bound); in __ubsan_handle_vla_bound_not_positive()
394 void __ubsan_handle_out_of_bounds(struct out_of_bounds_data *data, void *index) in __ubsan_handle_out_of_bounds() argument
399 if (suppress_report(&data->location)) in __ubsan_handle_out_of_bounds()
402 ubsan_prologue(&data->location, &flags); in __ubsan_handle_out_of_bounds()
404 val_to_string(index_str, sizeof(index_str), data->index_type, index); in __ubsan_handle_out_of_bounds()
406 data->array_type->type_name); in __ubsan_handle_out_of_bounds()
411 void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data, in __ubsan_handle_shift_out_of_bounds() argument
415 struct type_descriptor *rhs_type = data->rhs_type; in __ubsan_handle_shift_out_of_bounds()
416 struct type_descriptor *lhs_type = data->lhs_type; in __ubsan_handle_shift_out_of_bounds()
420 if (suppress_report(&data->location)) in __ubsan_handle_shift_out_of_bounds()
423 ubsan_prologue(&data->location, &flags); in __ubsan_handle_shift_out_of_bounds()
451 void __ubsan_handle_builtin_unreachable(struct unreachable_data *data) in __ubsan_handle_builtin_unreachable() argument
455 ubsan_prologue(&data->location, &flags); in __ubsan_handle_builtin_unreachable()
462 void __ubsan_handle_load_invalid_value(struct invalid_value_data *data, in __ubsan_handle_load_invalid_value() argument
468 if (suppress_report(&data->location)) in __ubsan_handle_load_invalid_value()
471 ubsan_prologue(&data->location, &flags); in __ubsan_handle_load_invalid_value()
473 val_to_string(val_str, sizeof(val_str), data->type, val); in __ubsan_handle_load_invalid_value()
476 val_str, data->type->type_name); in __ubsan_handle_load_invalid_value()