commit 0f8139eb4bd06a19714608b5f246fc24fcafde6e Author: David Smith Date: Thu Dec 7 16:07:39 2017 -0600 Updated several tapsets for the 4.15 kernel. * tapset/linux/linuxmib.stp: Update the 'DelayedACKs' probes to handle a missing '$data' parameter. * tapset/linux/memory.stp: Handle missing '__GFP_COLD' flag. * tapset/linux/nfsd.stp: Update the 'nfsd.proc4.rename' probe to handle upstream changes. * tapset/linux/signal.stp: Update the 'signal.pending' probe to handle a missing '$sigsestsize' parameter. diff --git a/tapset/linux/linuxmib.stp b/tapset/linux/linuxmib.stp index ef09929..63ec248 100644 --- a/tapset/linux/linuxmib.stp +++ b/tapset/linux/linuxmib.stp @@ -1,6 +1,6 @@ /* * Copyright (C) 2009 IBM Corp. - * Copyright (C) 2010 Red Hat Inc. + * Copyright (C) 2010-2017 Red Hat Inc. * * This file is part of systemtap, and is free software. You can * redistribute it and/or modify it under the terms of the GNU General @@ -39,14 +39,18 @@ probe _linuxmib.DelayedACKs.A = kernel.function("tcp_send_ack") probe _linuxmib.DelayedACKs.B = kernel.function("tcp_delack_timer") { - sk=$data + sk=@choose_defined($data, + &@container_of($t, "inet_connection_sock", + icsk_delack_timer)->icsk_inet->sk) indelack_timer[sk]=1 op=0 } probe _linuxmib.DelayedACKs.C = kernel.function("tcp_delack_timer").return { - sk=@entry($data) + sk=@entry(@choose_defined($data, + &@container_of($t, "inet_connection_sock", + icsk_delack_timer)->icsk_inet->sk)) indelack_timer[sk]=0; op=0 } diff --git a/tapset/linux/memory.stp b/tapset/linux/memory.stp index b968fe3..169d0f1 100644 --- a/tapset/linux/memory.stp +++ b/tapset/linux/memory.stp @@ -1,7 +1,7 @@ // memory/vm related tapset // Copyright (C) 2005, 2006 IBM Corp. // Copyright (C) 2006 Intel Corporation. -// Copyright (C) 2014 Red Hat Inc. +// Copyright (C) 2014-2017 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General @@ -368,7 +368,9 @@ probe vm.oom_kill = kernel.function("oom_kill_process") !, __GFP_BITMASKS(__GFP_HIGH) __GFP_BITMASKS(__GFP_IO) __GFP_BITMASKS(__GFP_FS) +#ifdef __GFP_COLD __GFP_BITMASKS(__GFP_COLD) +#endif __GFP_BITMASKS(__GFP_NOWARN) #ifdef __GFP_RETRY_MAYFAIL __GFP_BITMASKS(__GFP_RETRY_MAYFAIL) diff --git a/tapset/linux/nfsd.stp b/tapset/linux/nfsd.stp index 3df1600..5a70e84 100644 --- a/tapset/linux/nfsd.stp +++ b/tapset/linux/nfsd.stp @@ -1262,18 +1262,26 @@ probe nfsd.proc4.rename = kernel.function("nfsd4_rename").call !, fh = & @nfsd4_compound_state($cstate)->save_fh tfh = & @nfsd4_compound_state($cstate)->current_fh - filelen = $rename->rn_snamelen - filename = kernel_string_n($rename->rn_sname, $rename->rn_snamelen) - tlen = $rename->rn_tnamelen - tname = kernel_string_n($rename->rn_tname, $rename->rn_tnamelen) + if (@defined($rename)) { + filelen = $rename->rn_snamelen + filename = kernel_string_n($rename->rn_sname, + $rename->rn_snamelen) + tlen = $rename->rn_tnamelen + tname = kernel_string_n($rename->rn_tname, $rename->rn_tnamelen) + } else { + filelen = $u->rename->rn_snamelen + filename = kernel_string_n($u->rename->rn_sname, + $u->rename->rn_snamelen) + tlen = $u->rename->rn_tnamelen + tname = kernel_string_n($u->rename->rn_tname, + $u->rename->rn_tnamelen) + } uid = __rqstp_uid($rqstp) gid = __rqstp_gid($rqstp) name = "nfsd.proc4.rename" - argstr = sprintf("%s to %s", - kernel_string_n($rename->rn_sname, $rename->rn_snamelen), - kernel_string_n($rename->rn_tname, $rename->rn_tnamelen)) + argstr = sprintf("%s to %s", filename, tname) } probe nfsd.proc4.rename.return = diff --git a/tapset/linux/signal.stp b/tapset/linux/signal.stp index 9a94bad..4f9f9f9 100644 --- a/tapset/linux/signal.stp +++ b/tapset/linux/signal.stp @@ -613,7 +613,11 @@ probe signal.pending = kernel.function("do_sigpending").call !, { name = "pending" sigset_add=@choose_defined($set, $uset) - sigset_size=$sigsetsize + + # Note that this isn't 100% correct if $sigsetsize doesn't + # exist (in the case of newer do_sigpending() calls). Instead, + # we're returning the default size of a sigset_t. + sigset_size=@choose_defined($sigsetsize, @cast_sizeof("sigset_t")) } /**