Revision 3cf6a32f3f2a45944dd5be5c6ac4deb46bcd3bee authored by Michael Petlan on 17 March 2022, 13:55:36 UTC, committed by Arnaldo Carvalho de Melo on 18 March 2022, 21:39:09 UTC
Before this patch, the symbol end address fixup to be called, needed two
conditions being met:

  if (prev->end == prev->start && prev->end != curr->start)

Where
  "prev->end == prev->start" means that prev is zero-long
                             (and thus needs a fixup)
and
  "prev->end != curr->start" means that fixup hasn't been applied yet

However, this logic is incorrect in the following situation:

*curr  = {rb_node = {__rb_parent_color = 278218928,
  rb_right = 0x0, rb_left = 0x0},
  start = 0xc000000000062354,
  end = 0xc000000000062354, namelen = 40, type = 2 '\002',
  binding = 0 '\000', idle = 0 '\000', ignore = 0 '\000',
  inlined = 0 '\000', arch_sym = 0 '\000', annotate2 = false,
  name = 0x1159739e "kprobe_optinsn_page\t[__builtin__kprobes]"}

*prev = {rb_node = {__rb_parent_color = 278219041,
  rb_right = 0x109548b0, rb_left = 0x109547c0},
  start = 0xc000000000062354,
  end = 0xc000000000062354, namelen = 12, type = 2 '\002',
  binding = 1 '\001', idle = 0 '\000', ignore = 0 '\000',
  inlined = 0 '\000', arch_sym = 0 '\000', annotate2 = false,
  name = 0x1095486e "optinsn_slot"}

In this case, prev->start == prev->end == curr->start == curr->end,
thus the condition above thinks that "we need a fixup due to zero
length of prev symbol, but it has been probably done, since the
prev->end == curr->start", which is wrong.

After the patch, the execution path proceeds to arch__symbols__fixup_end
function which fixes up the size of prev symbol by adding page_size to
its end offset.

Fixes: 3b01a413c196c910 ("perf symbols: Improve kallsyms symbol end addr calculation")
Signed-off-by: Michael Petlan <mpetlan@redhat.com>
Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kajol Jain <kjain@linux.ibm.com>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: http://lore.kernel.org/lkml/20220317135536.805-1-mpetlan@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
1 parent 34e047a
History
File Mode Size
ipset
ipvs
Kconfig -rw-r--r-- 53.2 KB
Makefile -rw-r--r-- 9.0 KB
core.c -rw-r--r-- 18.3 KB
nf_conncount.c -rw-r--r-- 15.3 KB
nf_conntrack_acct.c -rw-r--r-- 1.1 KB
nf_conntrack_amanda.c -rw-r--r-- 5.9 KB
nf_conntrack_broadcast.c -rw-r--r-- 1.9 KB
nf_conntrack_core.c -rw-r--r-- 73.1 KB
nf_conntrack_ecache.c -rw-r--r-- 8.2 KB
nf_conntrack_expect.c -rw-r--r-- 19.7 KB
nf_conntrack_extend.c -rw-r--r-- 2.8 KB
nf_conntrack_ftp.c -rw-r--r-- 16.2 KB
nf_conntrack_h323_asn1.c -rw-r--r-- 20.1 KB
nf_conntrack_h323_main.c -rw-r--r-- 50.9 KB
nf_conntrack_h323_types.c -rw-r--r-- 87.8 KB
nf_conntrack_helper.c -rw-r--r-- 15.1 KB
nf_conntrack_irc.c -rw-r--r-- 7.6 KB
nf_conntrack_labels.c -rw-r--r-- 2.1 KB
nf_conntrack_netbios_ns.c -rw-r--r-- 2.0 KB
nf_conntrack_netlink.c -rw-r--r-- 94.3 KB
nf_conntrack_pptp.c -rw-r--r-- 18.9 KB
nf_conntrack_proto.c -rw-r--r-- 17.1 KB
nf_conntrack_proto_dccp.c -rw-r--r-- 22.7 KB
nf_conntrack_proto_generic.c -rw-r--r-- 1.9 KB
nf_conntrack_proto_gre.c -rw-r--r-- 9.0 KB
nf_conntrack_proto_icmp.c -rw-r--r-- 10.7 KB
nf_conntrack_proto_icmpv6.c -rw-r--r-- 8.1 KB
nf_conntrack_proto_sctp.c -rw-r--r-- 21.7 KB
nf_conntrack_proto_tcp.c -rw-r--r-- 46.5 KB
nf_conntrack_proto_udp.c -rw-r--r-- 8.7 KB
nf_conntrack_sane.c -rw-r--r-- 5.5 KB
nf_conntrack_seqadj.c -rw-r--r-- 6.5 KB
nf_conntrack_sip.c -rw-r--r-- 46.2 KB
nf_conntrack_snmp.c -rw-r--r-- 2.0 KB
nf_conntrack_standalone.c -rw-r--r-- 32.6 KB
nf_conntrack_tftp.c -rw-r--r-- 3.8 KB
nf_conntrack_timeout.c -rw-r--r-- 4.0 KB
nf_conntrack_timestamp.c -rw-r--r-- 1.1 KB
nf_dup_netdev.c -rw-r--r-- 1.8 KB
nf_flow_table_core.c -rw-r--r-- 16.9 KB
nf_flow_table_inet.c -rw-r--r-- 2.6 KB
nf_flow_table_ip.c -rw-r--r-- 16.4 KB
nf_flow_table_offload.c -rw-r--r-- 32.4 KB
nf_hooks_lwtunnel.c -rw-r--r-- 1.2 KB
nf_internals.h -rw-r--r-- 1.3 KB
nf_log.c -rw-r--r-- 12.4 KB
nf_log_syslog.c -rw-r--r-- 27.3 KB
nf_nat_amanda.c -rw-r--r-- 2.5 KB
nf_nat_core.c -rw-r--r-- 31.3 KB
nf_nat_ftp.c -rw-r--r-- 4.0 KB
nf_nat_helper.c -rw-r--r-- 5.8 KB
nf_nat_irc.c -rw-r--r-- 3.4 KB
nf_nat_masquerade.c -rw-r--r-- 9.0 KB
nf_nat_proto.c -rw-r--r-- 27.9 KB
nf_nat_redirect.c -rw-r--r-- 3.1 KB
nf_nat_sip.c -rw-r--r-- 20.8 KB
nf_nat_tftp.c -rw-r--r-- 1.4 KB
nf_queue.c -rw-r--r-- 7.8 KB
nf_sockopt.c -rw-r--r-- 2.8 KB
nf_synproxy_core.c -rw-r--r-- 30.5 KB
nf_tables_api.c -rw-r--r-- 240.2 KB
nf_tables_core.c -rw-r--r-- 8.6 KB
nf_tables_offload.c -rw-r--r-- 16.3 KB
nf_tables_trace.c -rw-r--r-- 7.3 KB
nfnetlink.c -rw-r--r-- 17.6 KB
nfnetlink_acct.c -rw-r--r-- 13.2 KB
nfnetlink_cthelper.c -rw-r--r-- 19.0 KB
nfnetlink_cttimeout.c -rw-r--r-- 15.5 KB
nfnetlink_hook.c -rw-r--r-- 9.2 KB
nfnetlink_log.c -rw-r--r-- 29.4 KB
nfnetlink_osf.c -rw-r--r-- 9.7 KB
nfnetlink_queue.c -rw-r--r-- 38.3 KB
nft_bitwise.c -rw-r--r-- 12.7 KB
nft_byteorder.c -rw-r--r-- 4.6 KB
nft_chain_filter.c -rw-r--r-- 10.6 KB
nft_chain_nat.c -rw-r--r-- 3.6 KB
nft_chain_route.c -rw-r--r-- 4.0 KB
nft_cmp.c -rw-r--r-- 7.5 KB
nft_compat.c -rw-r--r-- 22.1 KB
nft_connlimit.c -rw-r--r-- 7.4 KB
nft_counter.c -rw-r--r-- 7.6 KB
nft_ct.c -rw-r--r-- 31.6 KB
nft_dup_netdev.c -rw-r--r-- 2.9 KB
nft_dynset.c -rw-r--r-- 10.4 KB
nft_exthdr.c -rw-r--r-- 14.1 KB
nft_fib.c -rw-r--r-- 3.9 KB
nft_fib_inet.c -rw-r--r-- 1.9 KB
nft_fib_netdev.c -rw-r--r-- 2.2 KB
nft_flow_offload.c -rw-r--r-- 12.3 KB
nft_fwd_netdev.c -rw-r--r-- 6.5 KB
nft_hash.c -rw-r--r-- 6.1 KB
nft_immediate.c -rw-r--r-- 5.7 KB
nft_last.c -rw-r--r-- 3.0 KB
nft_limit.c -rw-r--r-- 11.8 KB
nft_log.c -rw-r--r-- 7.5 KB
nft_lookup.c -rw-r--r-- 6.8 KB
nft_masq.c -rw-r--r-- 7.6 KB
nft_meta.c -rw-r--r-- 20.9 KB
nft_nat.c -rw-r--r-- 9.9 KB
nft_numgen.c -rw-r--r-- 5.7 KB
nft_objref.c -rw-r--r-- 6.4 KB
nft_osf.c -rw-r--r-- 3.6 KB
nft_payload.c -rw-r--r-- 22.9 KB
nft_queue.c -rw-r--r-- 5.2 KB
nft_quota.c -rw-r--r-- 7.3 KB
nft_range.c -rw-r--r-- 3.5 KB
nft_redir.c -rw-r--r-- 7.3 KB
nft_reject.c -rw-r--r-- 3.3 KB
nft_reject_inet.c -rw-r--r-- 2.9 KB
nft_reject_netdev.c -rw-r--r-- 4.9 KB
nft_rt.c -rw-r--r-- 4.4 KB
nft_set_bitmap.c -rw-r--r-- 8.6 KB
nft_set_hash.c -rw-r--r-- 18.1 KB
nft_set_pipapo.c -rw-r--r-- 63.4 KB
nft_set_pipapo.h -rw-r--r-- 8.9 KB
nft_set_pipapo_avx2.c -rw-r--r-- 39.4 KB
nft_set_pipapo_avx2.h -rw-r--r-- 428 bytes
nft_set_rbtree.c -rw-r--r-- 17.3 KB
nft_socket.c -rw-r--r-- 5.1 KB
nft_synproxy.c -rw-r--r-- 9.9 KB
nft_tproxy.c -rw-r--r-- 8.8 KB
nft_tunnel.c -rw-r--r-- 19.0 KB
nft_xfrm.c -rw-r--r-- 6.5 KB
utils.c -rw-r--r-- 5.3 KB
x_tables.c -rw-r--r-- 49.7 KB
xt_AUDIT.c -rw-r--r-- 3.5 KB
xt_CHECKSUM.c -rw-r--r-- 2.2 KB
xt_CLASSIFY.c -rw-r--r-- 1.8 KB
xt_CONNSECMARK.c -rw-r--r-- 3.5 KB
xt_CT.c -rw-r--r-- 8.8 KB
xt_DSCP.c -rw-r--r-- 3.8 KB
xt_HL.c -rw-r--r-- 3.4 KB
xt_HMARK.c -rw-r--r-- 8.7 KB
xt_IDLETIMER.c -rw-r--r-- 13.0 KB
xt_LED.c -rw-r--r-- 4.9 KB
xt_LOG.c -rw-r--r-- 2.9 KB
xt_MASQUERADE.c -rw-r--r-- 3.2 KB
xt_NETMAP.c -rw-r--r-- 4.8 KB
xt_NFLOG.c -rw-r--r-- 2.2 KB
xt_NFQUEUE.c -rw-r--r-- 3.7 KB
xt_RATEEST.c -rw-r--r-- 5.6 KB
xt_REDIRECT.c -rw-r--r-- 3.1 KB
xt_SECMARK.c -rw-r--r-- 4.2 KB
xt_TCPMSS.c -rw-r--r-- 8.7 KB
xt_TCPOPTSTRIP.c -rw-r--r-- 3.8 KB
xt_TEE.c -rw-r--r-- 5.4 KB
xt_TPROXY.c -rw-r--r-- 8.2 KB
xt_TRACE.c -rw-r--r-- 1.2 KB
xt_addrtype.c -rw-r--r-- 6.2 KB
xt_bpf.c -rw-r--r-- 3.6 KB
xt_cgroup.c -rw-r--r-- 5.5 KB
xt_cluster.c -rw-r--r-- 4.9 KB
xt_comment.c -rw-r--r-- 1.1 KB
xt_connbytes.c -rw-r--r-- 4.5 KB
xt_connlabel.c -rw-r--r-- 2.5 KB
xt_connlimit.c -rw-r--r-- 3.7 KB
xt_connmark.c -rw-r--r-- 5.1 KB
xt_conntrack.c -rw-r--r-- 9.5 KB
xt_cpu.c -rw-r--r-- 1.4 KB
xt_dccp.c -rw-r--r-- 4.3 KB
xt_devgroup.c -rw-r--r-- 2.1 KB
xt_dscp.c -rw-r--r-- 2.6 KB
xt_ecn.c -rw-r--r-- 4.3 KB
xt_esp.c -rw-r--r-- 2.5 KB
xt_hashlimit.c -rw-r--r-- 34.1 KB
xt_helper.c -rw-r--r-- 2.3 KB
xt_hl.c -rw-r--r-- 2.1 KB
xt_ipcomp.c -rw-r--r-- 2.7 KB
xt_iprange.c -rw-r--r-- 3.6 KB
xt_ipvs.c -rw-r--r-- 4.3 KB
xt_l2tp.c -rw-r--r-- 9.0 KB
xt_length.c -rw-r--r-- 1.7 KB
xt_limit.c -rw-r--r-- 6.1 KB
xt_mac.c -rw-r--r-- 1.6 KB
xt_mark.c -rw-r--r-- 1.9 KB
xt_multiport.c -rw-r--r-- 4.5 KB
xt_nat.c -rw-r--r-- 6.5 KB
xt_nfacct.c -rw-r--r-- 2.4 KB
xt_osf.c -rw-r--r-- 1.7 KB
xt_owner.c -rw-r--r-- 3.9 KB
xt_physdev.c -rw-r--r-- 3.9 KB
xt_pkttype.c -rw-r--r-- 1.5 KB
xt_policy.c -rw-r--r-- 4.7 KB
xt_quota.c -rw-r--r-- 2.0 KB
xt_rateest.c -rw-r--r-- 3.6 KB
xt_realm.c -rw-r--r-- 1.3 KB
xt_recent.c -rw-r--r-- 19.2 KB
xt_repldata.h -rw-r--r-- 1.6 KB
xt_sctp.c -rw-r--r-- 5.0 KB
xt_set.c -rw-r--r-- 19.6 KB
xt_socket.c -rw-r--r-- 8.4 KB
xt_state.c -rw-r--r-- 1.8 KB
xt_statistic.c -rw-r--r-- 2.4 KB
xt_string.c -rw-r--r-- 2.5 KB
xt_tcpmss.c -rw-r--r-- 2.4 KB
xt_tcpudp.c -rw-r--r-- 5.6 KB
xt_time.c -rw-r--r-- 8.5 KB
xt_u32.c -rw-r--r-- 2.7 KB

back to top