From 3ca13a712131c7df1a7264b7b495225b8bc55d9d Mon Sep 17 00:00:00 2001 From: William Cohen Date: Wed, 5 May 2021 09:49:22 -0400 Subject: [PATCH] Use the skb_frag_size accessor function rather than directly reading field There have been changes in the skb_frag_t struct. In newer kernels the size field no longer exists. Rather than trying to determine the name of the field the __skb_frag_size tapset function now uses the skb_frag_size accessor function instead. This function has been in kernels since 2011 and has been in RHEL kernels since RHEL6. --- tapset/linux/netfilter.stp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tapset/linux/netfilter.stp b/tapset/linux/netfilter.stp index 42f0080fa..0e231e5ba 100644 --- a/tapset/linux/netfilter.stp +++ b/tapset/linux/netfilter.stp @@ -124,8 +124,8 @@ private function __skb_shinfo:long(addr:long) private function __skb_frag_size:long(addr:long, frag:long) %{ /* pure */ struct skb_shared_info *skb_shr = (struct skb_shared_info *)(uintptr_t)STAP_ARG_addr; - skb_frag_t skb_frag = skb_shr->frags[STAP_ARG_frag]; - STAP_RETVALUE = skb_frag.size; + skb_frag_t *skb_frag = &(skb_shr->frags[STAP_ARG_frag]); + STAP_RETVALUE = skb_frag_size(skb_frag); %} private function __skb_frag_data_addr:long(addr:long, frag:long) -- 2.43.5