Lines Matching refs:data

228 	struct overflow_data *data = _data;
231 if (suppress_report(&data->location))
234 ubsan_prologue(&data->location, "division-overflow");
236 val_to_string(rhs_val_str, sizeof(rhs_val_str), data->type, rhs);
238 if (type_is_signed(data->type) && get_signed_val(data->type, rhs) == -1)
240 rhs_val_str, data->type->type_name);
248 static void handle_null_ptr_deref(struct type_mismatch_data_common *data)
250 if (suppress_report(data->location))
253 ubsan_prologue(data->location, "null-ptr-deref");
256 type_check_kinds[data->type_check_kind],
257 data->type->type_name);
262 static void handle_misaligned_access(struct type_mismatch_data_common *data,
265 if (suppress_report(data->location))
268 ubsan_prologue(data->location, "misaligned-access");
271 type_check_kinds[data->type_check_kind],
272 (void *)ptr, data->type->type_name);
273 pr_err("which requires %ld byte alignment\n", data->alignment);
278 static void handle_object_size_mismatch(struct type_mismatch_data_common *data,
281 if (suppress_report(data->location))
284 ubsan_prologue(data->location, "object-size-mismatch");
286 type_check_kinds[data->type_check_kind],
288 pr_err("for an object of type %s\n", data->type->type_name);
292 static void ubsan_type_mismatch_common(struct type_mismatch_data_common *data,
298 handle_null_ptr_deref(data);
299 else if (data->alignment && !IS_ALIGNED(ptr, data->alignment))
300 handle_misaligned_access(data, ptr);
302 handle_object_size_mismatch(data, ptr);
307 void __ubsan_handle_type_mismatch(struct type_mismatch_data *data,
311 .location = &data->location,
312 .type = data->type,
313 .alignment = data->alignment,
314 .type_check_kind = data->type_check_kind
323 struct type_mismatch_data_v1 *data = _data;
325 .location = &data->location,
326 .type = data->type,
327 .alignment = 1UL << data->log_alignment,
328 .type_check_kind = data->type_check_kind
337 struct out_of_bounds_data *data = _data;
340 if (suppress_report(&data->location))
343 ubsan_prologue(&data->location, "array-index-out-of-bounds");
345 val_to_string(index_str, sizeof(index_str), data->index_type, index);
347 data->array_type->type_name);
354 struct shift_out_of_bounds_data *data = _data;
355 struct type_descriptor *rhs_type = data->rhs_type;
356 struct type_descriptor *lhs_type = data->lhs_type;
361 if (suppress_report(&data->location))
364 ubsan_prologue(&data->location, "shift-out-of-bounds");
396 struct unreachable_data *data = _data;
397 ubsan_prologue(&data->location, "unreachable");
406 struct invalid_value_data *data = _data;
410 if (suppress_report(&data->location))
413 ubsan_prologue(&data->location, "invalid-load");
415 val_to_string(val_str, sizeof(val_str), data->type, val);
418 val_str, data->type->type_name);
430 struct alignment_assumption_data *data = _data;
433 if (suppress_report(&data->location))
436 ubsan_prologue(&data->location, "alignment-assumption");
440 align, offset, data->type->type_name);
443 align, data->type->type_name);