Lines Matching refs:type
136 static bool type_is_int(struct type_descriptor *type) in type_is_int() argument
138 return type->type_kind == type_kind_int; in type_is_int()
141 static bool type_is_signed(struct type_descriptor *type) in type_is_signed() argument
143 WARN_ON(!type_is_int(type)); in type_is_signed()
144 return type->type_info & 1; in type_is_signed()
147 static unsigned type_bit_width(struct type_descriptor *type) in type_bit_width() argument
149 return 1 << (type->type_info >> 1); in type_bit_width()
152 static bool is_inline_int(struct type_descriptor *type) in is_inline_int() argument
155 unsigned bits = type_bit_width(type); in is_inline_int()
157 WARN_ON(!type_is_int(type)); in is_inline_int()
162 static s_max get_signed_val(struct type_descriptor *type, void *val) in get_signed_val() argument
164 if (is_inline_int(type)) { in get_signed_val()
165 unsigned extra_bits = sizeof(s_max)*8 - type_bit_width(type); in get_signed_val()
171 if (type_bit_width(type) == 64) in get_signed_val()
177 static bool val_is_negative(struct type_descriptor *type, void *val) in val_is_negative() argument
179 return type_is_signed(type) && get_signed_val(type, val) < 0; in val_is_negative()
182 static u_max get_unsigned_val(struct type_descriptor *type, void *val) in get_unsigned_val() argument
184 if (is_inline_int(type)) in get_unsigned_val()
187 if (type_bit_width(type) == 64) in get_unsigned_val()
193 static void val_to_string(char *str, size_t size, struct type_descriptor *type, in val_to_string() argument
196 if (type_is_int(type)) { in val_to_string()
197 if (type_bit_width(type) == 128) { in val_to_string()
199 u_max val = get_unsigned_val(type, value); in val_to_string()
209 } else if (type_is_signed(type)) { in val_to_string()
211 (s64)get_signed_val(type, value)); in val_to_string()
214 (u64)get_unsigned_val(type, value)); in val_to_string()
245 struct type_descriptor *type = data->type; in handle_overflow() local
252 ubsan_prologue(&data->location, type_is_signed(type) ? in handle_overflow()
256 val_to_string(lhs_val_str, sizeof(lhs_val_str), type, lhs); in handle_overflow()
257 val_to_string(rhs_val_str, sizeof(rhs_val_str), type, rhs); in handle_overflow()
262 type->type_name); in handle_overflow()
299 val_to_string(old_val_str, sizeof(old_val_str), data->type, old_val); in __ubsan_handle_negate_overflow()
302 old_val_str, data->type->type_name); in __ubsan_handle_negate_overflow()
343 val_to_string(rhs_val_str, sizeof(rhs_val_str), data->type, rhs); in __ubsan_handle_divrem_overflow()
345 if (type_is_signed(data->type) && get_signed_val(data->type, rhs) == -1) in __ubsan_handle_divrem_overflow()
347 rhs_val_str, data->type->type_name); in __ubsan_handle_divrem_overflow()
364 data->type->type_name); in handle_null_ptr_deref()
379 (void *)ptr, data->type->type_name); in handle_misaligned_access()
395 pr_err("for an object of type %s\n", data->type->type_name); in handle_object_size_mismatch()
419 .type = data->type, in __ubsan_handle_type_mismatch()
433 .type = data->type, in __ubsan_handle_type_mismatch_v1()
522 val_to_string(val_str, sizeof(val_str), data->type, val); in __ubsan_handle_load_invalid_value()
525 val_str, data->type->type_name); in __ubsan_handle_load_invalid_value()
547 align, offset, data->type->type_name); in __ubsan_handle_alignment_assumption()
550 align, data->type->type_name); in __ubsan_handle_alignment_assumption()