Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Patch ubsan - Fix undefined references to ubsan functions #6813

Merged
merged 2 commits into from
May 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion core/arch/arm/kernel/boot.c
Original file line number Diff line number Diff line change
Expand Up @@ -1508,7 +1508,7 @@ unsigned long __weak get_aslr_seed(void)
goto err;
}

return fdt64_to_cpu(*seed);
return fdt64_to_cpu(fdt64_ld(seed));

err:
/* Try platform implementation */
Expand Down
21 changes: 21 additions & 0 deletions core/kernel/ubsan.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ struct nonnull_arg_data {
*/
void __ubsan_handle_type_mismatch(struct type_mismatch_data *data,
unsigned long ptr);
void __ubsan_handle_type_mismatch_v1(struct type_mismatch_data *data,
unsigned long ptr);
void __ubsan_handle_add_overflow(struct overflow_data *data,
unsigned long lhs, unsigned long rhs);
void __ubsan_handle_sub_overflow(struct overflow_data *data,
Expand All @@ -80,6 +82,8 @@ void __ubsan_handle_negate_overflow(struct overflow_data *data,
unsigned long old_val);
void __ubsan_handle_divrem_overflow(struct overflow_data *data,
unsigned long lhs, unsigned long rhs);
void __ubsan_handle_pointer_overflow(struct overflow_data *data,
unsigned long lhs, unsigned long rhs);
void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data,
unsigned long lhs, unsigned long rhs);
void __ubsan_handle_out_of_bounds(struct out_of_bounds_data *data,
Expand Down Expand Up @@ -119,6 +123,14 @@ void __ubsan_handle_type_mismatch(struct type_mismatch_data *data,
panic();
}

void __ubsan_handle_type_mismatch_v1(struct type_mismatch_data *data,
unsigned long ptr __unused)
{
print_loc(__func__, &data->loc);
if (ubsan_panic)
panic();
}

void __ubsan_handle_add_overflow(struct overflow_data *data,
unsigned long lhs __unused,
unsigned long rhs __unused)
Expand Down Expand Up @@ -163,6 +175,15 @@ void __ubsan_handle_divrem_overflow(struct overflow_data *data,
panic();
}

void __ubsan_handle_pointer_overflow(struct overflow_data *data,
unsigned long lhs __unused,
unsigned long rhs __unused)
{
print_loc(__func__, &data->loc);
if (ubsan_panic)
panic();
}

void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data,
unsigned long lhs __unused,
unsigned long rhs __unused)
Expand Down