Avoid truncating the return value of DTrace predicates.
Predicates are DIF objects whose return value is compared with zero to determine whether the corresponding probe body is to be executed. The return value itself is the contents of a 64-bit DIF register, but it was being truncated to an int before the comparison. This meant that a predicate such as /0x100000000/ would evaluate to false. Reported by: rwatson MFC after: 3 days
This commit is contained in:
parent
3a86bcdd17
commit
ca1ef36cf4
@ -7348,7 +7348,7 @@ dtrace_probe(dtrace_id_t id, uintptr_t arg0, uintptr_t arg1,
|
||||
|
||||
if (pred != NULL) {
|
||||
dtrace_difo_t *dp = pred->dtp_difo;
|
||||
int rval;
|
||||
uint64_t rval;
|
||||
|
||||
rval = dtrace_dif_emulate(dp, &mstate, vstate, state);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user