Lines Matching refs:type

63 static bool type_is_int(struct type_descriptor *type)  in type_is_int()  argument
65 return type->type_kind == type_kind_int; in type_is_int()
68 static bool type_is_signed(struct type_descriptor *type) in type_is_signed() argument
70 WARN_ON(!type_is_int(type)); in type_is_signed()
71 return type->type_info & 1; in type_is_signed()
74 static unsigned type_bit_width(struct type_descriptor *type) in type_bit_width() argument
76 return 1 << (type->type_info >> 1); in type_bit_width()
79 static bool is_inline_int(struct type_descriptor *type) in is_inline_int() argument
82 unsigned bits = type_bit_width(type); in is_inline_int()
84 WARN_ON(!type_is_int(type)); in is_inline_int()
89 static s_max get_signed_val(struct type_descriptor *type, unsigned long val) in get_signed_val() argument
91 if (is_inline_int(type)) { in get_signed_val()
92 unsigned extra_bits = sizeof(s_max)*8 - type_bit_width(type); in get_signed_val()
96 if (type_bit_width(type) == 64) in get_signed_val()
102 static bool val_is_negative(struct type_descriptor *type, unsigned long val) in val_is_negative() argument
104 return type_is_signed(type) && get_signed_val(type, val) < 0; in val_is_negative()
107 static u_max get_unsigned_val(struct type_descriptor *type, unsigned long val) in get_unsigned_val() argument
109 if (is_inline_int(type)) in get_unsigned_val()
112 if (type_bit_width(type) == 64) in get_unsigned_val()
118 static void val_to_string(char *str, size_t size, struct type_descriptor *type, in val_to_string() argument
121 if (type_is_int(type)) { in val_to_string()
122 if (type_bit_width(type) == 128) { in val_to_string()
124 u_max val = get_unsigned_val(type, value); in val_to_string()
134 } else if (type_is_signed(type)) { in val_to_string()
136 (s64)get_signed_val(type, value)); in val_to_string()
139 (u64)get_unsigned_val(type, value)); in val_to_string()
170 struct type_descriptor *type = data->type; in handle_overflow() local
180 val_to_string(lhs_val_str, sizeof(lhs_val_str), type, lhs); in handle_overflow()
181 val_to_string(rhs_val_str, sizeof(rhs_val_str), type, rhs); in handle_overflow()
183 type_is_signed(type) ? "signed" : "unsigned"); in handle_overflow()
188 type->type_name); in handle_overflow()
229 val_to_string(old_val_str, sizeof(old_val_str), data->type, old_val); in __ubsan_handle_negate_overflow()
232 old_val_str, data->type->type_name); in __ubsan_handle_negate_overflow()
251 val_to_string(rhs_val_str, sizeof(rhs_val_str), data->type, rhs); in __ubsan_handle_divrem_overflow()
253 if (type_is_signed(data->type) && get_signed_val(data->type, rhs) == -1) in __ubsan_handle_divrem_overflow()
255 rhs_val_str, data->type->type_name); in __ubsan_handle_divrem_overflow()
274 data->type->type_name); in handle_null_ptr_deref()
291 (void *)ptr, data->type->type_name); in handle_misaligned_access()
309 pr_err("for an object of type %s\n", data->type->type_name); in handle_object_size_mismatch()
330 .type = data->type, in __ubsan_handle_type_mismatch()
345 .type = data->type, in __ubsan_handle_type_mismatch_v1()
365 val_to_string(bound_str, sizeof(bound_str), data->type, bound); in __ubsan_handle_vla_bound_not_positive()
453 val_to_string(val_str, sizeof(val_str), data->type, val); in __ubsan_handle_load_invalid_value()
456 val_str, data->type->type_name); in __ubsan_handle_load_invalid_value()