This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
[Bug tapsets/16659] New: On kernels >= 3.13, the __ip_sock_daddr() tapset function no longer compiles
- From: "dsmith at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: systemtap at sourceware dot org
- Date: Tue, 04 Mar 2014 21:21:06 +0000
- Subject: [Bug tapsets/16659] New: On kernels >= 3.13, the __ip_sock_daddr() tapset function no longer compiles
- Auto-submitted: auto-generated
https://sourceware.org/bugzilla/show_bug.cgi?id=16659
Bug ID: 16659
Summary: On kernels >= 3.13, the __ip_sock_daddr() tapset
function no longer compiles
Product: systemtap
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: tapsets
Assignee: systemtap at sourceware dot org
Reporter: dsmith at redhat dot com
On kernels >= 3.13, the __ip_sock_daddr() tapset function no longer compiles:
####
# stap -p4 -ve 'probe tcp.recvmsg { printf("%s\n", daddr) }'
Pass 1: parsed user script and 100 library script(s) using
184500virt/27784res/2468shr/26000data kb, in 110usr/0sys/113real ms.
semantic error: unable to find member 'daddr' for struct ipv6_pinfo
(alternatives: saddr, cork, opt, recverr, rxopt, sndflow, tclass, rxpmtu,
daddr_cache, dontfrag, mc_loop, pmtudisc, __unused_1, __unused_2, flow_label,
ipv6only, srcprefs, frag_size, hop_limit, mcast_oif, rcv_tclass, saddr_cache,
ucast_oif, dst_cookie, mcast_hops, pktoptions, ipv6_ac_list, ipv6_fl_list,
ipv6_mc_list, min_hopcount, rx_dst_cookie, sticky_pktinfo): operator '->' at
/usr/local/share/systemtap/tapset/linux/ip.stp:111:63
source: return (&@cast(sock, "inet_sock",
"kernel<net/ip.h>")->pinet6->daddr)
^
semantic error: unable to find member 'daddr' for struct ipv6_pinfo
(alternatives: saddr, cork, opt, recverr, rxopt, sndflow, tclass, rxpmtu,
daddr_cache, dontfrag, mc_loop, pmtudisc, __unused_1, __unused_2, flow_label,
ipv6only, srcprefs, frag_size, hop_limit, mcast_oif, rcv_tclass, saddr_cache,
ucast_oif, dst_cookie, mcast_hops, pktoptions, ipv6_ac_list, ipv6_fl_list,
ipv6_mc_list, min_hopcount, rx_dst_cookie, sticky_pktinfo): operator '->' at
:111:63
source: return (&@cast(sock, "inet_sock",
"kernel<net/ip.h>")->pinet6->daddr)
^
semantic error: unable to find member 'daddr' for struct ipv6_pinfo
(alternatives: saddr, cork, opt, recverr, rxopt, sndflow, tclass, rxpmtu,
daddr_cache, dontfrag, mc_loop, pmtudisc, __unused_1, __unused_2, flow_label,
ipv6only, srcprefs, frag_size, hop_limit, mcast_oif, rcv_tclass, saddr_cache,
ucast_oif, dst_cookie, mcast_hops, pktoptions, ipv6_ac_list, ipv6_fl_list,
ipv6_mc_list, min_hopcount, rx_dst_cookie, sticky_pktinfo): operator '->' at
:111:63
source: return (&@cast(sock, "inet_sock",
"kernel<net/ip.h>")->pinet6->daddr)
^
Pass 2: analyzed script: 1 probe(s), 8 function(s), 4 embed(s), 0 global(s)
using 467480virt/152728res/4012shr/149072data kb, in 1490usr/210sys/1889real
ms.
Pass 2: analysis failed. [man error::pass2]
====
This is because of the following kernel commit:
====
commit efe4208f47f907b86f528788da711e8ab9dea44d
Author: Eric Dumazet <edumazet@google.com>
Date: Thu Oct 3 15:42:29 2013 -0700
ipv6: make lookups simpler and faster
TCP listener refactoring, part 4 :
To speed up inet lookups, we moved IPv4 addresses from inet to struct
sock_common
Now is time to do the same for IPv6, because it permits us to have fast
lookups for all kind of sockets, including upcoming SYN_RECV.
Getting IPv6 addresses in TCP lookups currently requires two extra cache
lines, plus a dereference (and memory stall).
inet6_sk(sk) does the dereference of inet_sk(__sk)->pinet6
This patch is way bigger than its IPv4 counter part, because for IPv4,
we could add aliases (inet_daddr, inet_rcv_saddr), while on IPv6,
it's not doable easily.
inet6_sk(sk)->daddr becomes sk->sk_v6_daddr
inet6_sk(sk)->rcv_saddr becomes sk->sk_v6_rcv_saddr
And timewait socket also have tw->tw_v6_daddr & tw->tw_v6_rcv_saddr
at the same offset.
We get rid of INET6_TW_MATCH() as INET6_MATCH() is now the generic
macro.
====
--
You are receiving this mail because:
You are the assignee for the bug.