Displaying 2 results from an estimated 2 matches for "f9000133".
2014 Dec 09
4
[LLVMdev] dmb ishld in AArch64
...n->next = next;
rcu_assign_pointer(hlist_pprev_rcu(n), n);
next->pprev = &n->next;
}
can reordered, and causes kernel crash.
f94006a8 ldr x8, [x21,#8]
f9000275 str x21, [x19]
d5033abf dmb ishst
f9400669 ldr x9, [x19,#8]
f9000668 str x8, [x19,#8] <==== reordered str
f9000133 str x19, [x9]
f90006b3 str x19, [x21,#8]
It should be:
f94006a8 ldr x8, [x21,#8]
f9000668 str x8, [x19,#8]
f9000275 str x21, [x19]
d5033abf dmb ishst
f9400669 ldr x9, [x19,#8]
f9000133 str x19, [x9]
f90006b3 str x19, [x21,#8]
I guess it’s because "dmb ishst" is not checked/tes...
2014 Dec 09
2
[LLVMdev] dmb ishld in AArch64
...ation, or it
> could be LLVM.
The problem is explained below, the reordering causes accessing to uninitialized data.
f94006a8 ldr x8, [x21,#8]
f9000275 str x21, [x19]
d5033abf dmb ishst
f9400669 ldr x9, [x19,#8] <==== uninitialized data
f9000668 str x8, [x19,#8] <==== initialization
f9000133 str x19, [x9] <==== accessing uninitialized address
f90006b3 str x19, [x21,#8]
> Do you have preprocessed source or LLVM IR handy? (You can get a .i
> file from "clang -save-temps" for example).
The IR looks OK to me, the order is correct. I think the optimization is on machi...