From 4dfd9e9b413004160c9965fd0d829a88178e1ad6 Mon Sep 17 00:00:00 2001 From: Joey Jiao Date: Tue, 14 May 2024 14:15:07 +0800 Subject: all: fix larger module size in /proc/modules Module size from /proc/modules is bigger than that from .text size in elf. --- pkg/vminfo/linux.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'pkg/vminfo/linux.go') diff --git a/pkg/vminfo/linux.go b/pkg/vminfo/linux.go index c8e81dd01..4f180e9ff 100644 --- a/pkg/vminfo/linux.go +++ b/pkg/vminfo/linux.go @@ -68,6 +68,10 @@ func (linux) parseModules(files filesystem) ([]*cover.KernelModule, error) { modules = append(modules, &cover.KernelModule{ Name: name, Addr: textAddr, + // The size is wrong as there is overlap in /proc/modules + // ex. module1['Addr'] + module1['Size'] > module2['Addr'] + // runtime kernel doesn't export .text section size to /sys/module/*/sections/.text + // so we need to read it from elf Size: modSize - offset, }) } @@ -75,7 +79,7 @@ func (linux) parseModules(files filesystem) ([]*cover.KernelModule, error) { if err != nil { return nil, err } - modules = append(modules, cover.KernelModule{ + modules = append(modules, &cover.KernelModule{ Name: "", Addr: _stext, Size: _etext - _stext, -- cgit mrf-deployment