From: Martin Cermak Date: Mon, 29 Jun 2020 14:30:34 +0000 (+0200) Subject: PR26181: Use explicit @cast() within get_ip_from_client() X-Git-Tag: release-4.4~114 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=403e927796c3008ad5d5fed9bd97dc7cbad424bb;p=systemtap.git PR26181: Use explicit @cast() within get_ip_from_client() Commit 00ee19ff030f665df7e087a579f39105256a0253 changed how @cast() operations work and they no longer default to using the kernel debuginfo for type information. Need to include kernel as location for this information for the @cast() rather than just assuming a default. Also, fix the type of server_ip, which historically had been a long, but since systemtap_v >= "4.3", it is a string. --- diff --git a/tapset/linux/nfs_proc.stp b/tapset/linux/nfs_proc.stp index 8da3f6b7b..257907457 100644 --- a/tapset/linux/nfs_proc.stp +++ b/tapset/linux/nfs_proc.stp @@ -77,11 +77,11 @@ function get_ip_from_client:string(clnt:long) * inside that buffer. */ if (@cast(addr, "sockaddr")->sa_family == @const("AF_INET")) { - return format_ipaddr(&@cast(addr, "sockaddr_in")->sin_addr->s_addr, @const("AF_INET")) + return format_ipaddr(&@cast(addr, "sockaddr_in", "kernel:sunrpc")->sin_addr->s_addr, @const("AF_INET")) } else if (@cast(addr, "sockaddr")->sa_family == @const("AF_INET6")) { - return format_ipaddr(&@cast(addr, "sockaddr_in6")->sin6_addr, @const("AF_INET6")) + return format_ipaddr(&@cast(addr, "sockaddr_in6", "kernel:sunrpc")->sin6_addr, @const("AF_INET6")) } return "" } @@ -90,12 +90,12 @@ function get_ip_from_client:long(clnt:long) { cl_xprt = @cast(clnt, "rpc_clnt", "kernel:sunrpc")->cl_xprt addr = &@cast(cl_xprt, "rpc_xprt", "kernel:sunrpc")->addr - if (@cast(addr, "sockaddr_in")->sin_family + if (@cast(addr, "sockaddr_in", "kernel:sunrpc")->sin_family != @const("AF_INET")) { /* Now consider ipv4 only */ return 0 } - return @cast(addr, "sockaddr_in")->sin_addr->s_addr + return @cast(addr, "sockaddr_in", "kernel:sunrpc")->sin_addr->s_addr } %) @@ -758,7 +758,11 @@ probe _nfs.proc2.missing_read_setup = never { inode = 0 client = 0 +%( systemtap_v >= "4.3" %? + server_ip = "0" +%: server_ip = 0 +%) prot = 0 count = 0