From 1f11cfd7279ff3046e6e7f871eeb195c48ccbfa9 Mon Sep 17 00:00:00 2001 From: Joey Jiao Date: Tue, 11 Jun 2024 10:53:25 +0800 Subject: all: always use KernelModule ptr to unify usage --- pkg/cover/backend/backend.go | 2 +- pkg/cover/backend/dwarf.go | 2 +- pkg/cover/backend/elf.go | 2 +- pkg/cover/backend/gvisor.go | 2 +- pkg/cover/backend/mach-o.go | 2 +- pkg/cover/backend/modules.go | 4 ++-- pkg/cover/canonicalizer.go | 10 +++++----- pkg/cover/canonicalizer_test.go | 8 ++++---- pkg/cover/report.go | 2 +- pkg/vminfo/linux.go | 6 +++--- pkg/vminfo/netbsd.go | 2 +- pkg/vminfo/openbsd.go | 2 +- pkg/vminfo/vminfo.go | 6 +++--- syz-manager/cover.go | 2 +- syz-manager/covfilter.go | 2 +- syz-manager/rpc.go | 2 +- tools/syz-cover/syz-cover.go | 6 +++--- 17 files changed, 31 insertions(+), 31 deletions(-) diff --git a/pkg/cover/backend/backend.go b/pkg/cover/backend/backend.go index fa4b8303a..bba483fa8 100644 --- a/pkg/cover/backend/backend.go +++ b/pkg/cover/backend/backend.go @@ -60,7 +60,7 @@ type Range struct { const LineEnd = 1 << 30 func Make(target *targets.Target, vm, objDir, srcDir, buildDir string, splitBuild bool, - moduleObj []string, modules []KernelModule) (*Impl, error) { + moduleObj []string, modules []*KernelModule) (*Impl, error) { if objDir == "" { return nil, fmt.Errorf("kernel obj directory is not specified") } diff --git a/pkg/cover/backend/dwarf.go b/pkg/cover/backend/dwarf.go index b01e8a0d1..1eb6dd146 100644 --- a/pkg/cover/backend/dwarf.go +++ b/pkg/cover/backend/dwarf.go @@ -30,7 +30,7 @@ type dwarfParams struct { buildDir string splitBuildDelimiters []string moduleObj []string - hostModules []KernelModule + hostModules []*KernelModule readSymbols func(*KernelModule, *symbolInfo) ([]*Symbol, error) readTextData func(*KernelModule) ([]byte, error) readModuleCoverPoints func(*targets.Target, *KernelModule, *symbolInfo) ([2][]uint64, error) diff --git a/pkg/cover/backend/elf.go b/pkg/cover/backend/elf.go index 45c841a68..f4f288314 100644 --- a/pkg/cover/backend/elf.go +++ b/pkg/cover/backend/elf.go @@ -15,7 +15,7 @@ import ( ) func makeELF(target *targets.Target, objDir, srcDir, buildDir string, splitBuildDelimiters, moduleObj []string, - hostModules []KernelModule) (*Impl, error) { + hostModules []*KernelModule) (*Impl, error) { return makeDWARF(&dwarfParams{ target: target, objDir: objDir, diff --git a/pkg/cover/backend/gvisor.go b/pkg/cover/backend/gvisor.go index 9d4fc68b3..ed8a316cd 100644 --- a/pkg/cover/backend/gvisor.go +++ b/pkg/cover/backend/gvisor.go @@ -14,7 +14,7 @@ import ( "github.com/google/syzkaller/sys/targets" ) -func makeGvisor(target *targets.Target, objDir, srcDir, buildDir string, modules []KernelModule) (*Impl, error) { +func makeGvisor(target *targets.Target, objDir, srcDir, buildDir string, modules []*KernelModule) (*Impl, error) { if len(modules) != 0 { return nil, fmt.Errorf("gvisor coverage does not support modules") } diff --git a/pkg/cover/backend/mach-o.go b/pkg/cover/backend/mach-o.go index d56cf010f..5f7eb78a0 100644 --- a/pkg/cover/backend/mach-o.go +++ b/pkg/cover/backend/mach-o.go @@ -14,7 +14,7 @@ import ( ) func makeMachO(target *targets.Target, objDir, srcDir, buildDir string, - moduleObj []string, hostModules []KernelModule) (*Impl, error) { + moduleObj []string, hostModules []*KernelModule) (*Impl, error) { return makeDWARF(&dwarfParams{ target: target, objDir: objDir, diff --git a/pkg/cover/backend/modules.go b/pkg/cover/backend/modules.go index 6fe3c6fcc..b91ca8025 100644 --- a/pkg/cover/backend/modules.go +++ b/pkg/cover/backend/modules.go @@ -23,7 +23,7 @@ type KernelModule struct { } func discoverModules(target *targets.Target, objDir string, moduleObj []string, - hostModules []KernelModule) ( + hostModules []*KernelModule) ( []*KernelModule, error) { modules := []*KernelModule{ // A dummy module representing the kernel itself. @@ -42,7 +42,7 @@ func discoverModules(target *targets.Target, objDir string, moduleObj []string, return modules, nil } -func discoverModulesLinux(dirs []string, hostModules []KernelModule) ([]*KernelModule, error) { +func discoverModulesLinux(dirs []string, hostModules []*KernelModule) ([]*KernelModule, error) { paths, err := locateModules(dirs) if err != nil { return nil, err diff --git a/pkg/cover/canonicalizer.go b/pkg/cover/canonicalizer.go index 26a9e86ee..b1f866963 100644 --- a/pkg/cover/canonicalizer.go +++ b/pkg/cover/canonicalizer.go @@ -12,7 +12,7 @@ import ( type Canonicalizer struct { // Map of modules stored as module name:kernel module. - modules map[string]KernelModule + modules map[string]*KernelModule // Contains a sorted list of the canonical module addresses. moduleKeys []uint64 @@ -48,13 +48,13 @@ type canonicalizerModule struct { discard bool } -func NewCanonicalizer(modules []KernelModule, flagSignal bool) *Canonicalizer { +func NewCanonicalizer(modules []*KernelModule, flagSignal bool) *Canonicalizer { // Return if not using canonicalization. if len(modules) == 0 || !flagSignal { return &Canonicalizer{} } // Create a map of canonical module offsets by name. - canonicalModules := make(map[string]KernelModule) + canonicalModules := make(map[string]*KernelModule) for _, module := range modules { canonicalModules[module.Name] = module } @@ -68,7 +68,7 @@ func NewCanonicalizer(modules []KernelModule, flagSignal bool) *Canonicalizer { } } -func (can *Canonicalizer) NewInstance(modules []KernelModule) *CanonicalizerInstance { +func (can *Canonicalizer) NewInstance(modules []*KernelModule) *CanonicalizerInstance { if can.moduleKeys == nil { return &CanonicalizerInstance{} } @@ -130,7 +130,7 @@ func (ci *CanonicalizerInstance) Decanonicalize(elems []uint64) []uint64 { } // Store sorted list of addresses. Used to binary search when converting PCs. -func setModuleKeys(moduleKeys []uint64, modules []KernelModule) { +func setModuleKeys(moduleKeys []uint64, modules []*KernelModule) { for idx, module := range modules { moduleKeys[idx] = module.Addr } diff --git a/pkg/cover/canonicalizer_test.go b/pkg/cover/canonicalizer_test.go index ace2f6231..5a8fa2fb7 100644 --- a/pkg/cover/canonicalizer_test.go +++ b/pkg/cover/canonicalizer_test.go @@ -244,7 +244,7 @@ func (serv *RPCServer) runTest(val canonicalizeValue) string { return "" } -func (serv *RPCServer) connect(name string, modules []KernelModule, flagSignal bool) { +func (serv *RPCServer) connect(name string, modules []*KernelModule, flagSignal bool) { if !serv.modulesInitialized { serv.canonicalModules = NewCanonicalizer(modules, flagSignal) serv.modulesInitialized = true @@ -255,10 +255,10 @@ func (serv *RPCServer) connect(name string, modules []KernelModule, flagSignal b } } -func initModules(addrs, sizes []uint64) []KernelModule { - var modules []KernelModule +func initModules(addrs, sizes []uint64) []*KernelModule { + var modules []*KernelModule for idx, addr := range addrs { - modules = append(modules, KernelModule{ + modules = append(modules, &KernelModule{ Name: strconv.FormatInt(int64(idx), 10), Addr: addr, Size: sizes[idx], diff --git a/pkg/cover/report.go b/pkg/cover/report.go index 2e1403cfe..4a557c252 100644 --- a/pkg/cover/report.go +++ b/pkg/cover/report.go @@ -31,7 +31,7 @@ type Prog struct { type KernelModule = backend.KernelModule func MakeReportGenerator(cfg *mgrconfig.Config, subsystem []mgrconfig.Subsystem, - modules []KernelModule, rawCover bool) (*ReportGenerator, error) { + modules []*KernelModule, rawCover bool) (*ReportGenerator, error) { impl, err := backend.Make(cfg.SysTarget, cfg.Type, cfg.KernelObj, cfg.KernelSrc, cfg.KernelBuildSrc, cfg.AndroidSplitBuild, cfg.ModuleObj, modules) if err != nil { diff --git a/pkg/vminfo/linux.go b/pkg/vminfo/linux.go index 2735ad0ef..b038778a1 100644 --- a/pkg/vminfo/linux.go +++ b/pkg/vminfo/linux.go @@ -43,8 +43,8 @@ func (linux) machineInfos() []machineInfoFunc { } } -func (linux) parseModules(files filesystem) ([]cover.KernelModule, error) { - var modules []cover.KernelModule +func (linux) parseModules(files filesystem) ([]*cover.KernelModule, error) { + var modules []*cover.KernelModule re := regexp.MustCompile(`(\w+) ([0-9]+) .*(0[x|X][a-fA-F0-9]+)[^\n]*`) modulesText, _ := files.ReadFile("/proc/modules") for _, match := range re.FindAllSubmatch(modulesText, -1) { @@ -65,7 +65,7 @@ func (linux) parseModules(files filesystem) ([]cover.KernelModule, error) { return nil, fmt.Errorf("module %v size parsing error: %w", name, err) } offset := modAddr - textAddr - modules = append(modules, cover.KernelModule{ + modules = append(modules, &cover.KernelModule{ Name: name, Addr: textAddr, Size: modSize - offset, diff --git a/pkg/vminfo/netbsd.go b/pkg/vminfo/netbsd.go index cb6c1b33a..d447e33c5 100644 --- a/pkg/vminfo/netbsd.go +++ b/pkg/vminfo/netbsd.go @@ -18,7 +18,7 @@ func (netbsd) checkFiles() []string { return nil } -func (netbsd) parseModules(files filesystem) ([]cover.KernelModule, error) { +func (netbsd) parseModules(files filesystem) ([]*cover.KernelModule, error) { return nil, nil } diff --git a/pkg/vminfo/openbsd.go b/pkg/vminfo/openbsd.go index 07ada0a98..7ecb96f81 100644 --- a/pkg/vminfo/openbsd.go +++ b/pkg/vminfo/openbsd.go @@ -18,7 +18,7 @@ func (openbsd) checkFiles() []string { return nil } -func (openbsd) parseModules(files filesystem) ([]cover.KernelModule, error) { +func (openbsd) parseModules(files filesystem) ([]*cover.KernelModule, error) { return nil, nil } diff --git a/pkg/vminfo/vminfo.go b/pkg/vminfo/vminfo.go index 103ee0a18..a880f2f5b 100644 --- a/pkg/vminfo/vminfo.go +++ b/pkg/vminfo/vminfo.go @@ -57,7 +57,7 @@ func New(cfg *mgrconfig.Config) *Checker { } } -func (checker *Checker) MachineInfo(fileInfos []*flatrpc.FileInfo) ([]cover.KernelModule, []byte, error) { +func (checker *Checker) MachineInfo(fileInfos []*flatrpc.FileInfo) ([]*cover.KernelModule, []byte, error) { files := createVirtualFilesystem(fileInfos) modules, err := checker.parseModules(files) if err != nil { @@ -106,7 +106,7 @@ type machineInfoFunc func(files filesystem, w io.Writer) (string, error) type checker interface { RequiredFiles() []string checkFiles() []string - parseModules(files filesystem) ([]cover.KernelModule, error) + parseModules(files filesystem) ([]*cover.KernelModule, error) machineInfos() []machineInfoFunc syscallCheck(*checkContext, *prog.Syscall) string } @@ -166,7 +166,7 @@ func (stub) checkFiles() []string { return nil } -func (stub) parseModules(files filesystem) ([]cover.KernelModule, error) { +func (stub) parseModules(files filesystem) ([]*cover.KernelModule, error) { return nil, nil } diff --git a/syz-manager/cover.go b/syz-manager/cover.go index 0e396700b..c9e01ebb5 100644 --- a/syz-manager/cover.go +++ b/syz-manager/cover.go @@ -17,7 +17,7 @@ var ( cachedRepGen *cover.ReportGenerator ) -func getReportGenerator(cfg *mgrconfig.Config, modules []cover.KernelModule) (*cover.ReportGenerator, error) { +func getReportGenerator(cfg *mgrconfig.Config, modules []*cover.KernelModule) (*cover.ReportGenerator, error) { cachedRepGenMu.Lock() defer cachedRepGenMu.Unlock() if cachedRepGen == nil { diff --git a/syz-manager/covfilter.go b/syz-manager/covfilter.go index 0393841ae..ee2eb715f 100644 --- a/syz-manager/covfilter.go +++ b/syz-manager/covfilter.go @@ -17,7 +17,7 @@ import ( "github.com/google/syzkaller/pkg/mgrconfig" ) -func createCoverageFilter(cfg *mgrconfig.Config, modules []cover.KernelModule) ([]uint64, map[uint64]struct{}, error) { +func createCoverageFilter(cfg *mgrconfig.Config, modules []*cover.KernelModule) ([]uint64, map[uint64]struct{}, error) { if !cfg.HasCovFilter() { return nil, nil, nil } diff --git a/syz-manager/rpc.go b/syz-manager/rpc.go index 7e4a8b634..422a6be00 100644 --- a/syz-manager/rpc.go +++ b/syz-manager/rpc.go @@ -42,7 +42,7 @@ type RPCServer struct { baseSource *queue.DynamicSourceCtl enabledFeatures flatrpc.Feature setupFeatures flatrpc.Feature - modules []cover.KernelModule + modules []*cover.KernelModule canonicalModules *cover.Canonicalizer execCoverFilter []uint64 // includes both coverage and comparison PCs coverFilter map[uint64]struct{} // includes only coverage PCs diff --git a/tools/syz-cover/syz-cover.go b/tools/syz-cover/syz-cover.go index 1b5846ebf..e15ae9b24 100644 --- a/tools/syz-cover/syz-cover.go +++ b/tools/syz-cover/syz-cover.go @@ -52,7 +52,7 @@ func main() { if err != nil { tool.Fail(err) } - var modules []cover.KernelModule + var modules []*cover.KernelModule if *flagModules != "" { m, err := loadModules(*flagModules) if err != nil { @@ -151,12 +151,12 @@ func readPCs(files []string) ([]uint64, error) { return pcs, nil } -func loadModules(fname string) ([]cover.KernelModule, error) { +func loadModules(fname string) ([]*cover.KernelModule, error) { data, err := os.ReadFile(fname) if err != nil { return nil, err } - var modules []cover.KernelModule + var modules []*cover.KernelModule err = json.Unmarshal(data, &modules) if err != nil { return nil, err -- cgit mrf-deployment