Page MenuHomeFreeBSD

D58426.id182567.diff
No OneTemporary

D58426.id182567.diff

Index: sys/arm64/arm64/trap.c
===================================================================
--- sys/arm64/arm64/trap.c
+++ sys/arm64/arm64/trap.c
@@ -217,6 +217,17 @@
uint64_t far, int lower)
{
if (!lower) {
+ /*
+ * Accessing unaligned memory may fault when using atomics.
+ * Make sure we don't panic if we're doing an unaligned
+ * access to userland memory, as can happen with _umtx_op()
+ */
+ if (td->td_intr_nesting_level == 0 &&
+ td->td_pcb->pcb_onfault != 0) {
+ frame->tf_elr = td->td_pcb->pcb_onfault;
+ return;
+ }
+
print_registers(frame);
print_gp_register("far", far);
printf(" esr: 0x%.16lx\n", esr);

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 30, 4:24 AM (2 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35659575
Default Alt Text
D58426.id182567.diff (661 B)

Event Timeline