Is this a bug from function kernel_int?
Frank Ch. Eigler
fche@redhat.com
Tue Jan 29 01:23:00 GMT 2019
Hi -
> [...]
> __u32 end_seq; /* SEQ + FIN + SYN + datalen */
>
> So, end_seq is an unsigned 32-bit value, not a signed 32-bit value.
> Strangely enough, we don't have a kernel_uint() function. But, you
> could do something like:
>
> __uint32(*kernel_int(&*@cast($skb->cb, "tcp_skb_cb",
> "kernel<net/tcp.h>")->end_seq))
Chances are you don't need that much machinery.
A
probe SOMEWHERE {
end_seq = @cast($skb->cb, "tcp_skb_cb", "kernel<net/tcp.h>")->end_seq
}
works for me here, though I think the unsignedness of end_seq is not
specifically handled. We should probably treat that as a systemtap bug,
but you can work around it with a
end_seq = end_seq & 0xffffffff
- FChE
More information about the Systemtap
mailing list