Skip to content

dtrace: FBT probe inspecting arg5 generates CHERI exception. #2693

Description

@qwattash

Steps to reproduce:

sudo dtrace -n 'fbt::ip_output:entry /execname == "iperf3" && arg5 != NULL/ { @flowid = quantize(((struct inpcb *)arg5)->inp_flowid); }' -c 'cpuset -l 1 iperf3 -c 10.0.0.2 -u -l 1460 -n 4G -b 0'

dtrace: error on enabled probe ID 1 (ID 45872: fbt:kernel:ip_output:entry): CHERI exception in action #5 at DIF offset 36

This occurs on a slightly older CheriBSD then current dev, which I'm using for benchmarking, should be in dev as well though.

As discussed offline, this can be worked around by using args[5] instead.

fbt::ip_output:entry
/execname == "iperf3" && args[5] != NULL/ 
{ 
    @flowid = quantize(((struct inpcb *)args[5])->inp_flowid);
}

I believe there is a related bug when storing a pointer in a self->foo variable as in:

fbt::netisr_select_cpuid:entry { self->cpuidp = (u_int *)args[4]; }
fbt::netisr_select_cpuid:return /self->cpuidp/ { trace( *(self->cpuidp) ); }

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions