From 002170fbae88011602918a0d73675bfdb6fe4200 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 14 Apr 2025 08:03:22 +0200 Subject: pkg/declextract: more precise fileops callback resolution Use resolved Function references instead of string names for fileops callback resolution. Function names are not unique, a number of callbacks have the same names. --- pkg/declextract/entity.go | 11 ++ pkg/declextract/fileops.go | 100 ++++++++-------- pkg/declextract/interface.go | 3 + sys/linux/auto.txt | 130 ++------------------- sys/linux/auto.txt.info | 38 +++--- .../testdata/file_operations.c.probe | 10 +- 6 files changed, 101 insertions(+), 191 deletions(-) diff --git a/pkg/declextract/entity.go b/pkg/declextract/entity.go index d52d265f4..d0a309a0f 100644 --- a/pkg/declextract/entity.go +++ b/pkg/declextract/entity.go @@ -89,6 +89,17 @@ type FileOps struct { Mmap string `json:"mmap,omitempty"` Ioctl string `json:"ioctl,omitempty"` SourceFile string `json:"source_file,omitempty"` + + *fileOps +} + +type fileOps struct { + open *Function + read *Function + write *Function + mmap *Function + ioctl *Function + ops []*Function // all non-nil callbacks } type Ioctl struct { diff --git a/pkg/declextract/fileops.go b/pkg/declextract/fileops.go index 72b77a5c4..387db4f63 100644 --- a/pkg/declextract/fileops.go +++ b/pkg/declextract/fileops.go @@ -18,33 +18,32 @@ func (ctx *context) serializeFileOps() { for _, ioctl := range ctx.Ioctls { ctx.ioctls[ioctl.Name] = ioctl.Type } - fopsToFiles := ctx.mapFopsToFiles() + uniqueFuncs := ctx.resolveFopsCallbacks() + fopsToFiles := ctx.mapFopsToFiles(uniqueFuncs) for _, fops := range ctx.FileOps { files := fopsToFiles[fops] canGenerate := Tristate(len(files) != 0) - for _, op := range []string{fops.Read, fops.Write, fops.Mmap} { - if op == "" { + for _, op := range []*Function{fops.read, fops.write, fops.mmap} { + if op == nil { continue } - file := ctx.mustFindFunc(op, fops.SourceFile).File ctx.noteInterface(&Interface{ Type: IfaceFileop, - Name: op, - Func: op, - Files: []string{file}, + Name: op.Name, + Func: op.Name, + Files: []string{op.File}, AutoDescriptions: canGenerate, }) } var ioctlCmds []string - if fops.Ioctl != "" { + if fops.ioctl != nil { ioctlCmds = ctx.inferCommandVariants(fops.Ioctl, fops.SourceFile, ioctlCmdArg) - file := ctx.mustFindFunc(fops.Ioctl, fops.SourceFile).File for _, cmd := range ioctlCmds { ctx.noteInterface(&Interface{ Type: IfaceIoctl, Name: cmd, IdentifyingConst: cmd, - Files: []string{file}, + Files: []string{fops.ioctl.File}, Func: fops.Ioctl, AutoDescriptions: canGenerate, scopeArg: ioctlCmdArg, @@ -55,7 +54,7 @@ func (ctx *context) serializeFileOps() { ctx.noteInterface(&Interface{ Type: IfaceIoctl, Name: fops.Ioctl, - Files: []string{file}, + Files: []string{fops.ioctl.File}, Func: fops.Ioctl, AutoDescriptions: canGenerate, }) @@ -69,16 +68,17 @@ func (ctx *context) serializeFileOps() { } func (ctx *context) createFops(fops *FileOps, files, ioctlCmds []string) { + name := ctx.uniqualize("fops name", fops.Name) // If it has only open, then emit only openat that returns generic fd. fdt := "fd" - if len(fops.ops()) > 1 || fops.Open == "" { - fdt = fmt.Sprintf("fd_%v", fops.Name) + if len(fops.ops) > 1 || fops.Open == "" { + fdt = fmt.Sprintf("fd_%v", name) ctx.fmt("resource %v[fd]\n", fdt) } - suffix := autoSuffix + "_" + fops.Name + suffix := autoSuffix + "_" + name fileFlags := fmt.Sprintf("\"%s\"", files[0]) if len(files) > 1 { - fileFlags = fmt.Sprintf("%v_files", fops.Name) + fileFlags = fmt.Sprintf("%v_files", name) ctx.fmt("%v = ", fileFlags) for i, file := range files { ctx.fmt("%v \"%v\"", comma(i), file) @@ -137,45 +137,40 @@ func (ctx *context) createIoctls(fops *FileOps, ioctlCmds []string, suffix, fdt } // mapFopsToFiles maps file_operations to actual file names. -func (ctx *context) mapFopsToFiles() map[*FileOps][]string { +func (ctx *context) mapFopsToFiles(uniqueFuncs map[*Function]int) map[*FileOps][]string { // Mapping turns out to be more of an art than science because // (1) there are lots of common callback functions that present in lots of file_operations // in different combinations, (2) some file operations are updated at runtime, // (3) some file operations are chained at runtime and we see callbacks from several // of them at the same time, (4) some callbacks are not reached (e.g. debugfs files // always have write callback, but can be installed without write permission). + // If a callback that is present in only 1 file_operations is matched, + // it's a stronger prioritization signal for that file_operations. - // uniqueFuncs hold callback functions that are present in only 1 file_operations, - // if such a callback is matched, it's a stronger prioritization signal for that file_operations. - uniqueFuncs := make(map[string]int) - funcToFops := make(map[string][]*FileOps) + funcToFops := make(map[*Function][]*FileOps) for _, fops := range ctx.FileOps { - for _, fn := range fops.ops() { + for _, fn := range fops.ops { funcToFops[fn] = append(funcToFops[fn], fops) - uniqueFuncs[fn]++ } } - // matchedFuncs holds functions are present in any file_operations callbacks - // (lots of coverage is not related to any file_operations at all). - matchedFuncs := make(map[string]bool) // Maps file names to set of all callbacks that operations on the file has reached. - fileToFuncs := make(map[string]map[string]bool) + fileToFuncs := make(map[string]map[*Function]bool) for _, file := range ctx.probe.Files { - funcs := make(map[string]bool) + funcs := make(map[*Function]bool) fileToFuncs[file.Name] = funcs for _, pc := range file.Cover { - fn := ctx.probe.PCs[pc].Func + fn := ctx.findFunc(ctx.probe.PCs[pc].Func, ctx.probe.PCs[pc].File) if len(funcToFops[fn]) != 0 { funcs[fn] = true - matchedFuncs[fn] = true } } } // This is a special entry for files that has only open callback // (it does not make sense to differentiate them further). generic := &FileOps{ - Name: "generic", - Open: "only_open", + Name: "generic", + Open: "only_open", + fileOps: &fileOps{}, } ctx.FileOps = append(ctx.FileOps, generic) fopsToFiles := make(map[*FileOps][]string) @@ -193,8 +188,8 @@ func (ctx *context) mapFopsToFiles() map[*FileOps][]string { return fopsToFiles } -func (ctx *context) mapFileToFops(funcs map[string]bool, funcToFops map[string][]*FileOps, - uniqueFuncs map[string]int, generic *FileOps) []*FileOps { +func (ctx *context) mapFileToFops(funcs map[*Function]bool, funcToFops map[*Function][]*FileOps, + uniqueFuncs map[*Function]int, generic *FileOps) []*FileOps { // First collect all candidates (all file_operations for which at least 1 callback was triggered). candidates := ctx.fileCandidates(funcs, funcToFops, uniqueFuncs) if len(candidates) == 0 { @@ -204,7 +199,7 @@ func (ctx *context) mapFileToFops(funcs map[string]bool, funcToFops map[string][ // There are lots of false positives due to common callback functions. maxScore := 0 for fops := range candidates { - ops := fops.ops() + ops := fops.ops // All else being equal prefer file_operations with more callbacks defined. score := len(ops) for _, fn := range ops { @@ -216,7 +211,7 @@ func (ctx *context) mapFileToFops(funcs map[string]bool, funcToFops map[string][ // If we matched ioctl, bump score by a lot. // We do want to emit ioctl's b/c they the only non-trivial // operations we emit at the moment. - if fn == fops.Ioctl { + if fn == fops.ioctl { score += 100 } // Unique callbacks are the strongest prioritization signal. @@ -266,18 +261,18 @@ func (ctx *context) mapFileToFops(funcs map[string]bool, funcToFops map[string][ return best } -func (ctx *context) fileCandidates(funcs map[string]bool, funcToFops map[string][]*FileOps, - uniqueFuncs map[string]int) map[*FileOps]int { +func (ctx *context) fileCandidates(funcs map[*Function]bool, funcToFops map[*Function][]*FileOps, + uniqueFuncs map[*Function]int) map[*FileOps]int { candidates := make(map[*FileOps]int) for fn := range funcs { for _, fops := range funcToFops[fn] { - if fops.Open != "" && len(fops.ops()) == 1 { + if fops.Open != "" && len(fops.ops) == 1 { // If it has only open, it's not very interesting // (we will use generic for it below). continue } hasUnique := false - for _, fn := range fops.ops() { + for _, fn := range fops.ops { if uniqueFuncs[fn] == 1 { hasUnique = true } @@ -289,10 +284,10 @@ func (ctx *context) fileCandidates(funcs map[string]bool, funcToFops map[string] // for the file, yet we haven't triggered them for reasons described // in the beginning of the function. if !hasUnique { - if fops.Open != "" && !funcs[fops.Open] { + if fops.open != nil && !funcs[fops.open] { continue } - if fops.Ioctl != "" && !funcs[fops.Ioctl] { + if fops.ioctl != nil && !funcs[fops.ioctl] { continue } } @@ -302,12 +297,23 @@ func (ctx *context) fileCandidates(funcs map[string]bool, funcToFops map[string] return candidates } -func (fops *FileOps) ops() []string { - var ops []string - for _, op := range []string{fops.Open, fops.Read, fops.Write, fops.Mmap, fops.Ioctl} { - if op != "" { - ops = append(ops, op) +func (ctx *context) resolveFopsCallbacks() map[*Function]int { + uniqueFuncs := make(map[*Function]int) + for _, fops := range ctx.FileOps { + fops.fileOps = &fileOps{ + open: ctx.mustFindFunc(fops.Open, fops.SourceFile), + read: ctx.mustFindFunc(fops.Read, fops.SourceFile), + write: ctx.mustFindFunc(fops.Write, fops.SourceFile), + mmap: ctx.mustFindFunc(fops.Mmap, fops.SourceFile), + ioctl: ctx.mustFindFunc(fops.Ioctl, fops.SourceFile), + } + for _, op := range []*Function{fops.open, fops.read, fops.write, fops.mmap, fops.ioctl} { + if op == nil { + continue + } + fops.ops = append(fops.ops, op) + uniqueFuncs[op]++ } } - return ops + return uniqueFuncs } diff --git a/pkg/declextract/interface.go b/pkg/declextract/interface.go index a1ba9c137..f386f398b 100644 --- a/pkg/declextract/interface.go +++ b/pkg/declextract/interface.go @@ -175,6 +175,9 @@ func (ctx *context) findFunc(name, file string) *Function { } func (ctx *context) mustFindFunc(name, file string) *Function { + if name == "" { + return nil + } fn := ctx.findFunc(name, file) if fn == nil { panic(fmt.Sprintf("no func %q in %q", name, file)) diff --git a/sys/linux/auto.txt b/sys/linux/auto.txt index e9b41201f..004bc2d56 100644 --- a/sys/linux/auto.txt +++ b/sys/linux/auto.txt @@ -35,7 +35,6 @@ include include include include -include include include include @@ -315,7 +314,7 @@ finit_module$auto(fd fd, uargs ptr[in, string], flags int32) flistxattr$auto(fd fd, list ptr[inout, string], size intptr) flock$auto(fd fd, cmd int32) fremovexattr$auto(fd fd, name ptr[in, string]) -fsconfig$auto(fd fd, cmd int32, _key ptr[in, string], _value ptr[in, array[auto_todo]], aux uid) +fsconfig$auto(fd fd, cmd int32, _key ptr[in, string], _value ptr[in, array[auto_todo]], aux gid) fsconfig$auto_EROFS_MOUNT_DAX_ALWAYS(fd fd, cmd int32, _key ptr[in, string], _value ptr[in, array[auto_todo]], aux const[EROFS_MOUNT_DAX_ALWAYS]) fsconfig$auto_EROFS_MOUNT_DAX_NEVER(fd fd, cmd int32, _key ptr[in, string], _value ptr[in, array[auto_todo]], aux const[EROFS_MOUNT_DAX_NEVER]) fsconfig$auto_FSCONFIG_CMD_CREATE(fd fd, cmd const[FSCONFIG_CMD_CREATE], _key ptr[in, string], _value ptr[in, array[auto_todo]], aux int32) @@ -1536,28 +1535,6 @@ clk_summary_fops__files = "/sys/kernel/debug/clk/clk_orphan_summary", "/sys/kern openat$auto_clk_summary_fops_(fd const[AT_FDCWD], file ptr[in, string[clk_summary_fops__files]], flags flags[open_flags], mode const[0]) fd_clk_summary_fops_ read$auto_clk_summary_fops_(fd fd_clk_summary_fops_, buf ptr[out, array[int8]], len bytesize[buf]) -resource fd_comedi_fops_comedi_fops[fd] -openat$auto_comedi_fops_comedi_fops(fd const[AT_FDCWD], file ptr[in, string["/proc/comedi"]], flags flags[open_flags], mode const[0]) fd_comedi_fops_comedi_fops -read$auto_comedi_fops_comedi_fops(fd fd_comedi_fops_comedi_fops, buf ptr[out, array[int8]], len bytesize[buf]) -write$auto_comedi_fops_comedi_fops(fd fd_comedi_fops_comedi_fops, buf ptr[in, array[int8]], len bytesize[buf]) -mmap$auto_comedi_fops_comedi_fops(addr vma, len len[addr], prot flags[mmap_prot], flags flags[mmap_flags], fd fd_comedi_fops_comedi_fops, offset fileoff) -ioctl$auto_COMEDI_BUFCONFIG(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_BUFCONFIG], arg ptr[in, comedi_bufconfig$auto]) -ioctl$auto_COMEDI_BUFINFO(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_BUFINFO], arg ptr[inout, comedi_bufinfo$auto]) -ioctl$auto_COMEDI_CANCEL(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_CANCEL], arg const[0]) -ioctl$auto_COMEDI_CHANINFO(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_CHANINFO], arg ptr[in, comedi_chaninfo$auto]) -ioctl$auto_COMEDI_CMD(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_CMD], arg ptr[in, comedi_cmd$auto]) -ioctl$auto_COMEDI_CMDTEST(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_CMDTEST], arg ptr[in, comedi_cmd$auto]) -ioctl$auto_COMEDI_DEVINFO(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_DEVINFO], arg ptr[in, comedi_devinfo$auto]) -ioctl$auto_COMEDI_INSN(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_INSN], arg ptr[in, comedi_insn$auto]) -ioctl$auto_COMEDI_INSNLIST(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_INSNLIST], arg ptr[in, comedi_insnlist$auto]) -ioctl$auto_COMEDI_LOCK(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_LOCK], arg const[0]) -ioctl$auto_COMEDI_POLL(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_POLL], arg const[0]) -ioctl$auto_COMEDI_RANGEINFO(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_RANGEINFO], arg ptr[in, comedi_rangeinfo$auto]) -ioctl$auto_COMEDI_SETRSUBD(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_SETRSUBD], arg const[0]) -ioctl$auto_COMEDI_SETWSUBD(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_SETWSUBD], arg const[0]) -ioctl$auto_COMEDI_SUBDINFO(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_SUBDINFO], arg ptr[in, comedi_subdinfo$auto]) -ioctl$auto_COMEDI_UNLOCK(fd fd_comedi_fops_comedi_fops, cmd const[COMEDI_UNLOCK], arg const[0]) - resource fd_component_list_fops_[fd] openat$auto_component_list_fops_(fd const[AT_FDCWD], file ptr[in, string["/sys/kernel/debug/asoc/components"]], flags flags[open_flags], mode const[0]) fd_component_list_fops_ read$auto_component_list_fops_(fd fd_component_list_fops_, buf ptr[out, array[int8]], len bytesize[buf]) @@ -2562,7 +2539,7 @@ read$auto_proc_gid_map_operations_base(fd fd_proc_gid_map_operations_base, buf p write$auto_proc_gid_map_operations_base(fd fd_proc_gid_map_operations_base, buf ptr[in, array[int8]], len bytesize[buf]) resource fd_proc_iter_file_ops_compat_inode[fd] -proc_iter_file_ops_compat_inode_files = "/proc/buddyinfo", "/proc/bus/pci/devices", "/proc/consoles", "/proc/crypto", "/proc/diskstats", "/proc/fb", "/proc/fs/ext4/sda1/mb_groups", "/proc/fs/ext4/sda1/mb_structs_summary", "/proc/fs/netfs/caches", "/proc/fs/netfs/cookies", "/proc/fs/netfs/requests", "/proc/fs/netfs/volumes", "/proc/interrupts", "/proc/iomem", "/proc/ioports", "/proc/kcore", "/proc/key-users", "/proc/keys", "/proc/lockdep", "/proc/lockdep_chains", "/proc/locks", "/proc/misc", "/proc/pagetypeinfo", "/proc/partitions", "/proc/schedstat", "/proc/scsi/sg/debug", "/proc/scsi/sg/device_strs", "/proc/scsi/sg/devices", "/proc/self/net/arp_tables_matches", "/proc/self/net/arp_tables_targets", "/proc/self/net/bonding/bond0", "/proc/self/net/ip6_tables_matches", "/proc/self/net/ip6_tables_targets", "/proc/self/net/ip_tables_matches", "/proc/self/net/ip_tables_targets", "/proc/self/net/rt_cache", "/proc/self/net/softnet_stat", "/proc/self/net/stat/rt_cache", "/proc/thread-self/net/arp_tables_matches", "/proc/thread-self/net/arp_tables_targets", "/proc/thread-self/net/bonding/bond0", "/proc/thread-self/net/ip6_tables_matches", "/proc/thread-self/net/ip6_tables_targets", "/proc/thread-self/net/ip_tables_matches", "/proc/thread-self/net/ip_tables_targets", "/proc/thread-self/net/rt_cache", "/proc/thread-self/net/softnet_stat", "/proc/thread-self/net/stat/rt_cache", "/proc/timer_list", "/proc/tty/drivers", "/proc/tty/ldiscs", "/proc/vmstat", "/proc/zoneinfo" +proc_iter_file_ops_compat_inode_files = "/proc/buddyinfo", "/proc/bus/pci/devices", "/proc/cgroups", "/proc/comedi", "/proc/consoles", "/proc/crypto", "/proc/diskstats", "/proc/dma", "/proc/driver/nvram", "/proc/driver/rtc", "/proc/execdomains", "/proc/fb", "/proc/filesystems", "/proc/fs/cifs/DebugData", "/proc/fs/cifs/open_files", "/proc/fs/ext4/sda1/es_shrinker_info", "/proc/fs/ext4/sda1/fc_info", "/proc/fs/ext4/sda1/mb_groups", "/proc/fs/ext4/sda1/mb_stats", "/proc/fs/ext4/sda1/mb_structs_summary", "/proc/fs/ext4/sda1/options", "/proc/fs/jfs/TxAnchor", "/proc/fs/netfs/caches", "/proc/fs/netfs/cookies", "/proc/fs/netfs/requests", "/proc/fs/netfs/volumes", "/proc/fs/xfs/xqm", "/proc/fs/xfs/xqmstat", "/proc/interrupts", "/proc/iomem", "/proc/ioports", "/proc/irq/0/affinity_hint", "/proc/irq/0/effective_affinity", "/proc/irq/0/effective_affinity_list", "/proc/irq/0/node", "/proc/irq/0/spurious", "/proc/irq/1/affinity_hint", "/proc/irq/1/effective_affinity", "/proc/irq/1/effective_affinity_list", "/proc/irq/1/node", "/proc/irq/1/spurious", "/proc/irq/10/affinity_hint", "/proc/irq/10/effective_affinity", "/proc/irq/10/effective_affinity_list", "/proc/irq/10/node", "/proc/irq/10/spurious", "/proc/irq/11/affinity_hint", "/proc/irq/11/effective_affinity", "/proc/irq/11/effective_affinity_list", "/proc/irq/11/node", "/proc/irq/11/spurious", "/proc/irq/12/affinity_hint", "/proc/irq/12/effective_affinity", "/proc/irq/12/effective_affinity_list", "/proc/irq/12/node", "/proc/irq/12/spurious", "/proc/irq/13/affinity_hint", "/proc/irq/13/effective_affinity", "/proc/irq/13/effective_affinity_list", "/proc/irq/13/node", "/proc/irq/13/spurious", "/proc/irq/14/affinity_hint", "/proc/irq/14/effective_affinity", "/proc/irq/14/effective_affinity_list", "/proc/irq/14/node", "/proc/irq/14/spurious", "/proc/irq/15/affinity_hint", "/proc/irq/15/effective_affinity", "/proc/irq/15/effective_affinity_list", "/proc/irq/15/node", "/proc/irq/15/spurious", "/proc/irq/2/affinity_hint", "/proc/irq/2/effective_affinity", "/proc/irq/2/effective_affinity_list", "/proc/irq/2/node", "/proc/irq/2/spurious", "/proc/irq/24/affinity_hint", "/proc/irq/24/effective_affinity", "/proc/irq/24/effective_affinity_list", "/proc/irq/24/node", "/proc/irq/24/spurious", "/proc/irq/25/affinity_hint", "/proc/irq/25/effective_affinity", "/proc/irq/25/effective_affinity_list", "/proc/irq/25/node", "/proc/irq/25/spurious", "/proc/irq/3/affinity_hint", "/proc/irq/3/effective_affinity", "/proc/irq/3/effective_affinity_list", "/proc/irq/3/node", "/proc/irq/3/spurious", "/proc/irq/4/affinity_hint", "/proc/irq/4/effective_affinity", "/proc/irq/4/effective_affinity_list", "/proc/irq/4/node", "/proc/irq/4/spurious", "/proc/irq/5/affinity_hint", "/proc/irq/5/effective_affinity", "/proc/irq/5/effective_affinity_list", "/proc/irq/5/node", "/proc/irq/5/spurious", "/proc/irq/6/affinity_hint", "/proc/irq/6/effective_affinity", "/proc/irq/6/effective_affinity_list", "/proc/irq/6/node", "/proc/irq/6/spurious", "/proc/irq/7/affinity_hint", "/proc/irq/7/effective_affinity", "/proc/irq/7/effective_affinity_list", "/proc/irq/7/node", "/proc/irq/7/spurious", "/proc/irq/8/affinity_hint", "/proc/irq/8/effective_affinity", "/proc/irq/8/effective_affinity_list", "/proc/irq/8/node", "/proc/irq/8/spurious", "/proc/irq/9/affinity_hint", "/proc/irq/9/effective_affinity", "/proc/irq/9/effective_affinity_list", "/proc/irq/9/node", "/proc/irq/9/spurious", "/proc/kcore", "/proc/key-users", "/proc/keys", "/proc/lockdep", "/proc/lockdep_chains", "/proc/lockdep_stats", "/proc/locks", "/proc/misc", "/proc/mtd", "/proc/pagetypeinfo", "/proc/partitions", "/proc/schedstat", "/proc/scsi/sg/debug", "/proc/scsi/sg/device_hdr", "/proc/scsi/sg/device_strs", "/proc/scsi/sg/devices", "/proc/scsi/sg/version", "/proc/self/net/arp_tables_matches", "/proc/self/net/arp_tables_targets", "/proc/self/net/bonding/bond0", "/proc/self/net/dev_snmp6/batadv0", "/proc/self/net/dev_snmp6/batadv_slave_0", "/proc/self/net/dev_snmp6/batadv_slave_1", "/proc/self/net/dev_snmp6/bond0", "/proc/self/net/dev_snmp6/bond_slave_0", "/proc/self/net/dev_snmp6/bond_slave_1", "/proc/self/net/dev_snmp6/bridge0", "/proc/self/net/dev_snmp6/bridge_slave_0", "/proc/self/net/dev_snmp6/bridge_slave_1", "/proc/self/net/dev_snmp6/caif0", "/proc/self/net/dev_snmp6/dummy0", "/proc/self/net/dev_snmp6/erspan0", "/proc/self/net/dev_snmp6/geneve0", "/proc/self/net/dev_snmp6/geneve1", "/proc/self/net/dev_snmp6/gre0", "/proc/self/net/dev_snmp6/gretap0", "/proc/self/net/dev_snmp6/hsr0", "/proc/self/net/dev_snmp6/hsr_slave_0", "/proc/self/net/dev_snmp6/hsr_slave_1", "/proc/self/net/dev_snmp6/ip6_vti0", "/proc/self/net/dev_snmp6/ip6gre0", "/proc/self/net/dev_snmp6/ip6gretap0", "/proc/self/net/dev_snmp6/ip6tnl0", "/proc/self/net/dev_snmp6/ip_vti0", "/proc/self/net/dev_snmp6/ipvlan0", "/proc/self/net/dev_snmp6/ipvlan1", "/proc/self/net/dev_snmp6/lo", "/proc/self/net/dev_snmp6/macsec0", "/proc/self/net/dev_snmp6/macvlan0", "/proc/self/net/dev_snmp6/macvlan1", "/proc/self/net/dev_snmp6/macvtap0", "/proc/self/net/dev_snmp6/netdevsim0", "/proc/self/net/dev_snmp6/netdevsim1", "/proc/self/net/dev_snmp6/netdevsim2", "/proc/self/net/dev_snmp6/netdevsim3", "/proc/self/net/dev_snmp6/nlmon0", "/proc/self/net/dev_snmp6/sit0", "/proc/self/net/dev_snmp6/syz_tun", "/proc/self/net/dev_snmp6/team0", "/proc/self/net/dev_snmp6/team_slave_0", "/proc/self/net/dev_snmp6/team_slave_1", "/proc/self/net/dev_snmp6/tunl0", "/proc/self/net/dev_snmp6/veth0", "/proc/self/net/dev_snmp6/veth0_macvtap", "/proc/self/net/dev_snmp6/veth0_to_batadv", "/proc/self/net/dev_snmp6/veth0_to_bond", "/proc/self/net/dev_snmp6/veth0_to_bridge", "/proc/self/net/dev_snmp6/veth0_to_hsr", "/proc/self/net/dev_snmp6/veth0_to_team", "/proc/self/net/dev_snmp6/veth0_virt_wifi", "/proc/self/net/dev_snmp6/veth0_vlan", "/proc/self/net/dev_snmp6/veth1", "/proc/self/net/dev_snmp6/veth1_macvtap", "/proc/self/net/dev_snmp6/veth1_to_batadv", "/proc/self/net/dev_snmp6/veth1_to_bond", "/proc/self/net/dev_snmp6/veth1_to_bridge", "/proc/self/net/dev_snmp6/veth1_to_hsr", "/proc/self/net/dev_snmp6/veth1_to_team", "/proc/self/net/dev_snmp6/veth1_virt_wifi", "/proc/self/net/dev_snmp6/veth1_vlan", "/proc/self/net/dev_snmp6/virt_wifi0", "/proc/self/net/dev_snmp6/vlan0", "/proc/self/net/dev_snmp6/vlan1", "/proc/self/net/dev_snmp6/wg0", "/proc/self/net/dev_snmp6/wg1", "/proc/self/net/dev_snmp6/wg2", "/proc/self/net/dev_snmp6/wlan0", "/proc/self/net/dev_snmp6/wlan1", "/proc/self/net/dev_snmp6/xfrm0", "/proc/self/net/ip6_tables_matches", "/proc/self/net/ip6_tables_targets", "/proc/self/net/ip_tables_matches", "/proc/self/net/ip_tables_targets", "/proc/self/net/psched", "/proc/self/net/rt_acct", "/proc/self/net/rt_cache", "/proc/self/net/softnet_stat", "/proc/self/net/stat/rt_cache", "/proc/self/net/vlan/vlan0", "/proc/self/net/vlan/vlan1", "/proc/thread-self/net/arp_tables_matches", "/proc/thread-self/net/arp_tables_targets", "/proc/thread-self/net/bonding/bond0", "/proc/thread-self/net/dev_snmp6/batadv0", "/proc/thread-self/net/dev_snmp6/batadv_slave_0", "/proc/thread-self/net/dev_snmp6/batadv_slave_1", "/proc/thread-self/net/dev_snmp6/bond0", "/proc/thread-self/net/dev_snmp6/bond_slave_0", "/proc/thread-self/net/dev_snmp6/bond_slave_1", "/proc/thread-self/net/dev_snmp6/bridge0", "/proc/thread-self/net/dev_snmp6/bridge_slave_0", "/proc/thread-self/net/dev_snmp6/bridge_slave_1", "/proc/thread-self/net/dev_snmp6/caif0", "/proc/thread-self/net/dev_snmp6/dummy0", "/proc/thread-self/net/dev_snmp6/erspan0", "/proc/thread-self/net/dev_snmp6/geneve0", "/proc/thread-self/net/dev_snmp6/geneve1", "/proc/thread-self/net/dev_snmp6/gre0", "/proc/thread-self/net/dev_snmp6/gretap0", "/proc/thread-self/net/dev_snmp6/hsr0", "/proc/thread-self/net/dev_snmp6/hsr_slave_0", "/proc/thread-self/net/dev_snmp6/hsr_slave_1", "/proc/thread-self/net/dev_snmp6/ip6_vti0", "/proc/thread-self/net/dev_snmp6/ip6gre0", "/proc/thread-self/net/dev_snmp6/ip6gretap0", "/proc/thread-self/net/dev_snmp6/ip6tnl0", "/proc/thread-self/net/dev_snmp6/ip_vti0", "/proc/thread-self/net/dev_snmp6/ipvlan0", "/proc/thread-self/net/dev_snmp6/ipvlan1", "/proc/thread-self/net/dev_snmp6/lo", "/proc/thread-self/net/dev_snmp6/macsec0", "/proc/thread-self/net/dev_snmp6/macvlan0", "/proc/thread-self/net/dev_snmp6/macvlan1", "/proc/thread-self/net/dev_snmp6/macvtap0", "/proc/thread-self/net/dev_snmp6/netdevsim0", "/proc/thread-self/net/dev_snmp6/netdevsim1", "/proc/thread-self/net/dev_snmp6/netdevsim2", "/proc/thread-self/net/dev_snmp6/netdevsim3", "/proc/thread-self/net/dev_snmp6/nlmon0", "/proc/thread-self/net/dev_snmp6/sit0", "/proc/thread-self/net/dev_snmp6/syz_tun", "/proc/thread-self/net/dev_snmp6/team0", "/proc/thread-self/net/dev_snmp6/team_slave_0", "/proc/thread-self/net/dev_snmp6/team_slave_1", "/proc/thread-self/net/dev_snmp6/tunl0", "/proc/thread-self/net/dev_snmp6/veth0", "/proc/thread-self/net/dev_snmp6/veth0_macvtap", "/proc/thread-self/net/dev_snmp6/veth0_to_batadv", "/proc/thread-self/net/dev_snmp6/veth0_to_bond", "/proc/thread-self/net/dev_snmp6/veth0_to_bridge", "/proc/thread-self/net/dev_snmp6/veth0_to_hsr", "/proc/thread-self/net/dev_snmp6/veth0_to_team", "/proc/thread-self/net/dev_snmp6/veth0_virt_wifi", "/proc/thread-self/net/dev_snmp6/veth0_vlan", "/proc/thread-self/net/dev_snmp6/veth1", "/proc/thread-self/net/dev_snmp6/veth1_macvtap", "/proc/thread-self/net/dev_snmp6/veth1_to_batadv", "/proc/thread-self/net/dev_snmp6/veth1_to_bond", "/proc/thread-self/net/dev_snmp6/veth1_to_bridge", "/proc/thread-self/net/dev_snmp6/veth1_to_hsr", "/proc/thread-self/net/dev_snmp6/veth1_to_team", "/proc/thread-self/net/dev_snmp6/veth1_virt_wifi", "/proc/thread-self/net/dev_snmp6/veth1_vlan", "/proc/thread-self/net/dev_snmp6/virt_wifi0", "/proc/thread-self/net/dev_snmp6/vlan0", "/proc/thread-self/net/dev_snmp6/vlan1", "/proc/thread-self/net/dev_snmp6/wg0", "/proc/thread-self/net/dev_snmp6/wg1", "/proc/thread-self/net/dev_snmp6/wg2", "/proc/thread-self/net/dev_snmp6/wlan0", "/proc/thread-self/net/dev_snmp6/wlan1", "/proc/thread-self/net/dev_snmp6/xfrm0", "/proc/thread-self/net/ip6_tables_matches", "/proc/thread-self/net/ip6_tables_targets", "/proc/thread-self/net/ip_tables_matches", "/proc/thread-self/net/ip_tables_targets", "/proc/thread-self/net/psched", "/proc/thread-self/net/rt_acct", "/proc/thread-self/net/rt_cache", "/proc/thread-self/net/softnet_stat", "/proc/thread-self/net/stat/rt_cache", "/proc/thread-self/net/vlan/vlan0", "/proc/thread-self/net/vlan/vlan1", "/proc/timer_list", "/proc/tty/driver/serial", "/proc/tty/driver/usbserial", "/proc/tty/drivers", "/proc/tty/ldiscs", "/proc/vmallocinfo", "/proc/vmstat", "/proc/zoneinfo" openat$auto_proc_iter_file_ops_compat_inode(fd const[AT_FDCWD], file ptr[in, string[proc_iter_file_ops_compat_inode_files]], flags flags[open_flags], mode const[0]) fd_proc_iter_file_ops_compat_inode read$auto_proc_iter_file_ops_compat_inode(fd fd_proc_iter_file_ops_compat_inode, buf ptr[out, array[int8]], len bytesize[buf]) write$auto_proc_iter_file_ops_compat_inode(fd fd_proc_iter_file_ops_compat_inode, buf ptr[in, array[int8]], len bytesize[buf]) @@ -2582,7 +2559,7 @@ read$auto_proc_mem_operations_base(fd fd_proc_mem_operations_base, buf ptr[out, write$auto_proc_mem_operations_base(fd fd_proc_mem_operations_base, buf ptr[in, array[int8]], len bytesize[buf]) resource fd_proc_mountinfo_operations_mnt_namespace[fd] -proc_mountinfo_operations_mnt_namespace_files = "/proc/cpuinfo", "/proc/devices", "/proc/self/mountinfo", "/proc/thread-self/mountinfo" +proc_mountinfo_operations_mnt_namespace_files = "/proc/cmdline", "/proc/cpuinfo", "/proc/devices", "/proc/loadavg", "/proc/meminfo", "/proc/self/mountinfo", "/proc/softirqs", "/proc/stat", "/proc/thread-self/mountinfo", "/proc/uptime", "/proc/version" openat$auto_proc_mountinfo_operations_mnt_namespace(fd const[AT_FDCWD], file ptr[in, string[proc_mountinfo_operations_mnt_namespace_files]], flags flags[open_flags], mode const[0]) fd_proc_mountinfo_operations_mnt_namespace read$auto_proc_mountinfo_operations_mnt_namespace(fd fd_proc_mountinfo_operations_mnt_namespace, buf ptr[out, array[int8]], len bytesize[buf]) @@ -2686,7 +2663,7 @@ read$auto_proc_setgroups_operations_base(fd fd_proc_setgroups_operations_base, b write$auto_proc_setgroups_operations_base(fd fd_proc_setgroups_operations_base, buf ptr[in, array[int8]], len bytesize[buf]) resource fd_proc_single_file_operations_base[fd] -proc_single_file_operations_base_files = "/proc/cgroups", "/proc/cmdline", "/proc/dma", "/proc/driver/nvram", "/proc/driver/rtc", "/proc/execdomains", "/proc/filesystems", "/proc/fs/cifs/DebugData", "/proc/fs/cifs/open_files", "/proc/fs/ext4/sda1/es_shrinker_info", "/proc/fs/ext4/sda1/fc_info", "/proc/fs/ext4/sda1/mb_stats", "/proc/fs/ext4/sda1/options", "/proc/fs/jfs/TxAnchor", "/proc/fs/xfs/xqm", "/proc/fs/xfs/xqmstat", "/proc/irq/0/affinity_hint", "/proc/irq/0/effective_affinity", "/proc/irq/0/effective_affinity_list", "/proc/irq/0/node", "/proc/irq/0/spurious", "/proc/irq/1/affinity_hint", "/proc/irq/1/effective_affinity", "/proc/irq/1/effective_affinity_list", "/proc/irq/1/node", "/proc/irq/1/spurious", "/proc/irq/10/affinity_hint", "/proc/irq/10/effective_affinity", "/proc/irq/10/effective_affinity_list", "/proc/irq/10/node", "/proc/irq/10/spurious", "/proc/irq/11/affinity_hint", "/proc/irq/11/effective_affinity", "/proc/irq/11/effective_affinity_list", "/proc/irq/11/node", "/proc/irq/11/spurious", "/proc/irq/12/affinity_hint", "/proc/irq/12/effective_affinity", "/proc/irq/12/effective_affinity_list", "/proc/irq/12/node", "/proc/irq/12/spurious", "/proc/irq/13/affinity_hint", "/proc/irq/13/effective_affinity", "/proc/irq/13/effective_affinity_list", "/proc/irq/13/node", "/proc/irq/13/spurious", "/proc/irq/14/affinity_hint", "/proc/irq/14/effective_affinity", "/proc/irq/14/effective_affinity_list", "/proc/irq/14/node", "/proc/irq/14/spurious", "/proc/irq/15/affinity_hint", "/proc/irq/15/effective_affinity", "/proc/irq/15/effective_affinity_list", "/proc/irq/15/node", "/proc/irq/15/spurious", "/proc/irq/2/affinity_hint", "/proc/irq/2/effective_affinity", "/proc/irq/2/effective_affinity_list", "/proc/irq/2/node", "/proc/irq/2/spurious", "/proc/irq/24/affinity_hint", "/proc/irq/24/effective_affinity", "/proc/irq/24/effective_affinity_list", "/proc/irq/24/node", "/proc/irq/24/spurious", "/proc/irq/25/affinity_hint", "/proc/irq/25/effective_affinity", "/proc/irq/25/effective_affinity_list", "/proc/irq/25/node", "/proc/irq/25/spurious", "/proc/irq/3/affinity_hint", "/proc/irq/3/effective_affinity", "/proc/irq/3/effective_affinity_list", "/proc/irq/3/node", "/proc/irq/3/spurious", "/proc/irq/4/affinity_hint", "/proc/irq/4/effective_affinity", "/proc/irq/4/effective_affinity_list", "/proc/irq/4/node", "/proc/irq/4/spurious", "/proc/irq/5/affinity_hint", "/proc/irq/5/effective_affinity", "/proc/irq/5/effective_affinity_list", "/proc/irq/5/node", "/proc/irq/5/spurious", "/proc/irq/6/affinity_hint", "/proc/irq/6/effective_affinity", "/proc/irq/6/effective_affinity_list", "/proc/irq/6/node", "/proc/irq/6/spurious", "/proc/irq/7/affinity_hint", "/proc/irq/7/effective_affinity", "/proc/irq/7/effective_affinity_list", "/proc/irq/7/node", "/proc/irq/7/spurious", "/proc/irq/8/affinity_hint", "/proc/irq/8/effective_affinity", "/proc/irq/8/effective_affinity_list", "/proc/irq/8/node", "/proc/irq/8/spurious", "/proc/irq/9/affinity_hint", "/proc/irq/9/effective_affinity", "/proc/irq/9/effective_affinity_list", "/proc/irq/9/node", "/proc/irq/9/spurious", "/proc/loadavg", "/proc/lockdep_stats", "/proc/meminfo", "/proc/mtd", "/proc/scsi/sg/device_hdr", "/proc/scsi/sg/version", "/proc/self/arch_status", "/proc/self/cgroup", "/proc/self/cpuset", "/proc/self/io", "/proc/self/ksm_merging_pages", "/proc/self/ksm_stat", "/proc/self/limits", "/proc/self/net/dev_snmp6/batadv0", "/proc/self/net/dev_snmp6/batadv_slave_0", "/proc/self/net/dev_snmp6/batadv_slave_1", "/proc/self/net/dev_snmp6/bond0", "/proc/self/net/dev_snmp6/bond_slave_0", "/proc/self/net/dev_snmp6/bond_slave_1", "/proc/self/net/dev_snmp6/bridge0", "/proc/self/net/dev_snmp6/bridge_slave_0", "/proc/self/net/dev_snmp6/bridge_slave_1", "/proc/self/net/dev_snmp6/caif0", "/proc/self/net/dev_snmp6/dummy0", "/proc/self/net/dev_snmp6/erspan0", "/proc/self/net/dev_snmp6/geneve0", "/proc/self/net/dev_snmp6/geneve1", "/proc/self/net/dev_snmp6/gre0", "/proc/self/net/dev_snmp6/gretap0", "/proc/self/net/dev_snmp6/hsr0", "/proc/self/net/dev_snmp6/hsr_slave_0", "/proc/self/net/dev_snmp6/hsr_slave_1", "/proc/self/net/dev_snmp6/ip6_vti0", "/proc/self/net/dev_snmp6/ip6gre0", "/proc/self/net/dev_snmp6/ip6gretap0", "/proc/self/net/dev_snmp6/ip6tnl0", "/proc/self/net/dev_snmp6/ip_vti0", "/proc/self/net/dev_snmp6/ipvlan0", "/proc/self/net/dev_snmp6/ipvlan1", "/proc/self/net/dev_snmp6/lo", "/proc/self/net/dev_snmp6/macsec0", "/proc/self/net/dev_snmp6/macvlan0", "/proc/self/net/dev_snmp6/macvlan1", "/proc/self/net/dev_snmp6/macvtap0", "/proc/self/net/dev_snmp6/netdevsim0", "/proc/self/net/dev_snmp6/netdevsim1", "/proc/self/net/dev_snmp6/netdevsim2", "/proc/self/net/dev_snmp6/netdevsim3", "/proc/self/net/dev_snmp6/nlmon0", "/proc/self/net/dev_snmp6/sit0", "/proc/self/net/dev_snmp6/syz_tun", "/proc/self/net/dev_snmp6/team0", "/proc/self/net/dev_snmp6/team_slave_0", "/proc/self/net/dev_snmp6/team_slave_1", "/proc/self/net/dev_snmp6/tunl0", "/proc/self/net/dev_snmp6/veth0", "/proc/self/net/dev_snmp6/veth0_macvtap", "/proc/self/net/dev_snmp6/veth0_to_batadv", "/proc/self/net/dev_snmp6/veth0_to_bond", "/proc/self/net/dev_snmp6/veth0_to_bridge", "/proc/self/net/dev_snmp6/veth0_to_hsr", "/proc/self/net/dev_snmp6/veth0_to_team", "/proc/self/net/dev_snmp6/veth0_virt_wifi", "/proc/self/net/dev_snmp6/veth0_vlan", "/proc/self/net/dev_snmp6/veth1", "/proc/self/net/dev_snmp6/veth1_macvtap", "/proc/self/net/dev_snmp6/veth1_to_batadv", "/proc/self/net/dev_snmp6/veth1_to_bond", "/proc/self/net/dev_snmp6/veth1_to_bridge", "/proc/self/net/dev_snmp6/veth1_to_hsr", "/proc/self/net/dev_snmp6/veth1_to_team", "/proc/self/net/dev_snmp6/veth1_virt_wifi", "/proc/self/net/dev_snmp6/veth1_vlan", "/proc/self/net/dev_snmp6/virt_wifi0", "/proc/self/net/dev_snmp6/vlan0", "/proc/self/net/dev_snmp6/vlan1", "/proc/self/net/dev_snmp6/wg0", "/proc/self/net/dev_snmp6/wg1", "/proc/self/net/dev_snmp6/wg2", "/proc/self/net/dev_snmp6/wlan0", "/proc/self/net/dev_snmp6/wlan1", "/proc/self/net/dev_snmp6/xfrm0", "/proc/self/net/psched", "/proc/self/net/rt_acct", "/proc/self/net/vlan/vlan0", "/proc/self/net/vlan/vlan1", "/proc/self/oom_score", "/proc/self/personality", "/proc/self/schedstat", "/proc/self/stack", "/proc/self/stat", "/proc/self/statm", "/proc/self/status", "/proc/self/syscall", "/proc/self/wchan", "/proc/softirqs", "/proc/thread-self/arch_status", "/proc/thread-self/cgroup", "/proc/thread-self/cpuset", "/proc/thread-self/io", "/proc/thread-self/ksm_merging_pages", "/proc/thread-self/ksm_stat", "/proc/thread-self/limits", "/proc/thread-self/net/dev_snmp6/batadv0", "/proc/thread-self/net/dev_snmp6/batadv_slave_0", "/proc/thread-self/net/dev_snmp6/batadv_slave_1", "/proc/thread-self/net/dev_snmp6/bond0", "/proc/thread-self/net/dev_snmp6/bond_slave_0", "/proc/thread-self/net/dev_snmp6/bond_slave_1", "/proc/thread-self/net/dev_snmp6/bridge0", "/proc/thread-self/net/dev_snmp6/bridge_slave_0", "/proc/thread-self/net/dev_snmp6/bridge_slave_1", "/proc/thread-self/net/dev_snmp6/caif0", "/proc/thread-self/net/dev_snmp6/dummy0", "/proc/thread-self/net/dev_snmp6/erspan0", "/proc/thread-self/net/dev_snmp6/geneve0", "/proc/thread-self/net/dev_snmp6/geneve1", "/proc/thread-self/net/dev_snmp6/gre0", "/proc/thread-self/net/dev_snmp6/gretap0", "/proc/thread-self/net/dev_snmp6/hsr0", "/proc/thread-self/net/dev_snmp6/hsr_slave_0", "/proc/thread-self/net/dev_snmp6/hsr_slave_1", "/proc/thread-self/net/dev_snmp6/ip6_vti0", "/proc/thread-self/net/dev_snmp6/ip6gre0", "/proc/thread-self/net/dev_snmp6/ip6gretap0", "/proc/thread-self/net/dev_snmp6/ip6tnl0", "/proc/thread-self/net/dev_snmp6/ip_vti0", "/proc/thread-self/net/dev_snmp6/ipvlan0", "/proc/thread-self/net/dev_snmp6/ipvlan1", "/proc/thread-self/net/dev_snmp6/lo", "/proc/thread-self/net/dev_snmp6/macsec0", "/proc/thread-self/net/dev_snmp6/macvlan0", "/proc/thread-self/net/dev_snmp6/macvlan1", "/proc/thread-self/net/dev_snmp6/macvtap0", "/proc/thread-self/net/dev_snmp6/netdevsim0", "/proc/thread-self/net/dev_snmp6/netdevsim1", "/proc/thread-self/net/dev_snmp6/netdevsim2", "/proc/thread-self/net/dev_snmp6/netdevsim3", "/proc/thread-self/net/dev_snmp6/nlmon0", "/proc/thread-self/net/dev_snmp6/sit0", "/proc/thread-self/net/dev_snmp6/syz_tun", "/proc/thread-self/net/dev_snmp6/team0", "/proc/thread-self/net/dev_snmp6/team_slave_0", "/proc/thread-self/net/dev_snmp6/team_slave_1", "/proc/thread-self/net/dev_snmp6/tunl0", "/proc/thread-self/net/dev_snmp6/veth0", "/proc/thread-self/net/dev_snmp6/veth0_macvtap", "/proc/thread-self/net/dev_snmp6/veth0_to_batadv", "/proc/thread-self/net/dev_snmp6/veth0_to_bond", "/proc/thread-self/net/dev_snmp6/veth0_to_bridge", "/proc/thread-self/net/dev_snmp6/veth0_to_hsr", "/proc/thread-self/net/dev_snmp6/veth0_to_team", "/proc/thread-self/net/dev_snmp6/veth0_virt_wifi", "/proc/thread-self/net/dev_snmp6/veth0_vlan", "/proc/thread-self/net/dev_snmp6/veth1", "/proc/thread-self/net/dev_snmp6/veth1_macvtap", "/proc/thread-self/net/dev_snmp6/veth1_to_batadv", "/proc/thread-self/net/dev_snmp6/veth1_to_bond", "/proc/thread-self/net/dev_snmp6/veth1_to_bridge", "/proc/thread-self/net/dev_snmp6/veth1_to_hsr", "/proc/thread-self/net/dev_snmp6/veth1_to_team", "/proc/thread-self/net/dev_snmp6/veth1_virt_wifi", "/proc/thread-self/net/dev_snmp6/veth1_vlan", "/proc/thread-self/net/dev_snmp6/virt_wifi0", "/proc/thread-self/net/dev_snmp6/vlan0", "/proc/thread-self/net/dev_snmp6/vlan1", "/proc/thread-self/net/dev_snmp6/wg0", "/proc/thread-self/net/dev_snmp6/wg1", "/proc/thread-self/net/dev_snmp6/wg2", "/proc/thread-self/net/dev_snmp6/wlan0", "/proc/thread-self/net/dev_snmp6/wlan1", "/proc/thread-self/net/dev_snmp6/xfrm0", "/proc/thread-self/net/psched", "/proc/thread-self/net/rt_acct", "/proc/thread-self/net/vlan/vlan0", "/proc/thread-self/net/vlan/vlan1", "/proc/thread-self/oom_score", "/proc/thread-self/personality", "/proc/thread-self/schedstat", "/proc/thread-self/stack", "/proc/thread-self/stat", "/proc/thread-self/statm", "/proc/thread-self/status", "/proc/thread-self/syscall", "/proc/thread-self/wchan", "/proc/tty/driver/serial", "/proc/tty/driver/usbserial", "/proc/uptime", "/proc/version", "/proc/vmallocinfo" +proc_single_file_operations_base_files = "/proc/self/arch_status", "/proc/self/cgroup", "/proc/self/cpuset", "/proc/self/io", "/proc/self/ksm_merging_pages", "/proc/self/ksm_stat", "/proc/self/limits", "/proc/self/oom_score", "/proc/self/personality", "/proc/self/schedstat", "/proc/self/stack", "/proc/self/stat", "/proc/self/statm", "/proc/self/status", "/proc/self/syscall", "/proc/self/wchan", "/proc/thread-self/arch_status", "/proc/thread-self/cgroup", "/proc/thread-self/cpuset", "/proc/thread-self/io", "/proc/thread-self/ksm_merging_pages", "/proc/thread-self/ksm_stat", "/proc/thread-self/limits", "/proc/thread-self/oom_score", "/proc/thread-self/personality", "/proc/thread-self/schedstat", "/proc/thread-self/stack", "/proc/thread-self/stat", "/proc/thread-self/statm", "/proc/thread-self/status", "/proc/thread-self/syscall", "/proc/thread-self/wchan" openat$auto_proc_single_file_operations_base(fd const[AT_FDCWD], file ptr[in, string[proc_single_file_operations_base_files]], flags flags[open_flags], mode const[0]) fd_proc_single_file_operations_base read$auto_proc_single_file_operations_base(fd fd_proc_single_file_operations_base, buf ptr[out, array[int8]], len bytesize[buf]) @@ -3280,8 +3257,7 @@ openat$auto_split_huge_pages_fops_huge_memory(fd const[AT_FDCWD], file ptr[in, s write$auto_split_huge_pages_fops_huge_memory(fd fd_split_huge_pages_fops_huge_memory, buf ptr[in, array[int8]], len bytesize[buf]) resource fd_stat_fops_[fd] -stat_fops__files = "/proc/stat", "/sys/kernel/debug/f2fs/status" -openat$auto_stat_fops_(fd const[AT_FDCWD], file ptr[in, string[stat_fops__files]], flags flags[open_flags], mode const[0]) fd_stat_fops_ +openat$auto_stat_fops_(fd const[AT_FDCWD], file ptr[in, string["/sys/kernel/debug/f2fs/status"]], flags flags[open_flags], mode const[0]) fd_stat_fops_ read$auto_stat_fops_(fd fd_stat_fops_, buf ptr[out, array[int8]], len bytesize[buf]) resource fd_stat_fops_per_vm_kvm_main[fd] @@ -3295,10 +3271,13 @@ openat$auto_state_fops_(fd const[AT_FDCWD], file ptr[in, string["/sys/kernel/deb read$auto_state_fops_(fd fd_state_fops_, buf ptr[out, array[int8]], len bytesize[buf]) resource fd_stats_fops_[fd] -stats_fops__files = "/sys/kernel/debug/binder/stats", "/sys/kernel/debug/kfence/stats" -openat$auto_stats_fops_(fd const[AT_FDCWD], file ptr[in, string[stats_fops__files]], flags flags[open_flags], mode const[0]) fd_stats_fops_ +openat$auto_stats_fops_(fd const[AT_FDCWD], file ptr[in, string["/sys/kernel/debug/binder/stats"]], flags flags[open_flags], mode const[0]) fd_stats_fops_ read$auto_stats_fops_(fd fd_stats_fops_, buf ptr[out, array[int8]], len bytesize[buf]) +resource fd_stats_fops_2[fd] +openat$auto_stats_fops_2(fd const[AT_FDCWD], file ptr[in, string["/sys/kernel/debug/kfence/stats"]], flags flags[open_flags], mode const[0]) fd_stats_fops_2 +read$auto_stats_fops_2(fd fd_stats_fops_2, buf ptr[out, array[int8]], len bytesize[buf]) + resource fd_stats_seq_fops_netdebug[fd] openat$auto_stats_seq_fops_netdebug(fd const[AT_FDCWD], file ptr[in, string["/sys/kernel/debug/o2net/stats"]], flags flags[open_flags], mode const[0]) fd_stats_seq_fops_netdebug read$auto_stats_seq_fops_netdebug(fd fd_stats_seq_fops_netdebug, buf ptr[out, array[int8]], len bytesize[buf]) @@ -7482,95 +7461,6 @@ clone_args$auto { cgroup int64 } -comedi_bufconfig$auto { - subdevice int32 - flags int32 - maximum_size int32 - size int32 - unused array[const[0, int32], 4] -} - -comedi_bufinfo$auto { - subdevice int32 - bytes_read int32 - buf_write_ptr int32 - buf_read_ptr int32 - buf_write_count int32 - buf_read_count int32 - bytes_written int32 - unused array[const[0, int32], 4] -} - -comedi_chaninfo$auto { - subdev int32 - maxdata_list ptr[inout, int32] - flaglist ptr[inout, int32] - rangelist ptr[inout, int32] - unused array[const[0, int32], 4] -} - -comedi_cmd$auto { - subdev int32 - flags int32 - start_src int32 - start_arg int32 - scan_begin_src int32 - scan_begin_arg int32 - convert_src int32 - convert_arg int32 - scan_end_src int32 - scan_end_arg int32 - stop_src int32 - stop_arg int32 - chanlist ptr[inout, int32] - chanlist_len int32 - data ptr[inout, int16] - data_len int32 -} - -comedi_devinfo$auto { - version_code int32 - n_subdevs int32 - driver_name array[int8, 20] - board_name array[int8, 20] - read_subdevice int32 - write_subdevice int32 - unused array[const[0, int32], 30] -} - -comedi_insn$auto { - insn int32 - n int32 - data ptr[inout, int32] - subdev int32 - chanspec int32 - unused array[const[0, int32], 3] -} - -comedi_insnlist$auto { - n_insns int32 - insns ptr[inout, comedi_insn$auto] -} - -comedi_rangeinfo$auto { - range_type int32 - range_ptr ptr[inout, array[auto_todo]] -} - -comedi_subdinfo$auto { - type int32 - n_chan int32 - subd_flags int32 - timer_type int32 - len_chanlist int32 - maxdata int32 - flags int32 - range_type int32 - settling_time_0 int32 - insn_bits_support int32 - unused array[const[0, int32], 8] -} - compat_blk_user_trace_setup$auto { name array[int8, 32] act_mask int16 diff --git a/sys/linux/auto.txt.info b/sys/linux/auto.txt.info index da31f29ee..40e2bb0b7 100644 --- a/sys/linux/auto.txt.info +++ b/sys/linux/auto.txt.info @@ -95,9 +95,9 @@ FILEOP cifs_strict_readv func:cifs_strict_readv loc:1511 coverage:59 access:unkn FILEOP cifs_strict_writev func:cifs_strict_writev loc:3013 coverage:68 access:unknown manual_desc:unknown auto_desc:false file:fs/smb/client/file.c subsystem:cifs FILEOP clear_refs_write func:clear_refs_write loc:194 coverage:97 access:unknown manual_desc:unknown auto_desc:true file:fs/proc/task_mmu.c subsystem:fs FILEOP client_ctl_write func:client_ctl_write loc:52 coverage:0 access:unknown manual_desc:unknown auto_desc:false file:fs/nfsd/nfs4state.c subsystem:nfs -FILEOP comedi_mmap func:comedi_mmap loc:139 coverage:0 access:unknown manual_desc:unknown auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -FILEOP comedi_read func:comedi_read loc:183 coverage:2 access:unknown manual_desc:unknown auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -FILEOP comedi_write func:comedi_write loc:226 coverage:2 access:unknown manual_desc:unknown auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel +FILEOP comedi_mmap func:comedi_mmap loc:139 coverage:0 access:unknown manual_desc:unknown auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +FILEOP comedi_read func:comedi_read loc:183 coverage:2 access:unknown manual_desc:unknown auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +FILEOP comedi_write func:comedi_write loc:226 coverage:2 access:unknown manual_desc:unknown auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel FILEOP comm_write func:comm_write loc:46 coverage:80 access:unknown manual_desc:unknown auto_desc:true file:fs/proc/base.c subsystem:fs FILEOP configfs_bin_read_iter func:configfs_bin_read_iter loc:71 coverage:0 access:unknown manual_desc:unknown auto_desc:false file:fs/configfs/file.c subsystem:fs FILEOP configfs_bin_write_iter func:configfs_bin_write_iter loc:51 coverage:0 access:unknown manual_desc:unknown auto_desc:false file:fs/configfs/file.c subsystem:fs @@ -1089,22 +1089,22 @@ IOCTL CIFS_IOC_NOTIFY_INFO func:cifs_ioctl loc:51 coverage:0 access:unknown manu IOCTL CIFS_IOC_SET_INTEGRITY func:cifs_ioctl loc:39 coverage:0 access:unknown manual_desc:false auto_desc:false file:fs/smb/client/ioctl.c subsystem:cifs IOCTL CIFS_IOC_SHUTDOWN func:cifs_ioctl loc:99 coverage:0 access:unknown manual_desc:false auto_desc:false file:fs/smb/client/ioctl.c subsystem:cifs IOCTL CIFS_QUERY_INFO func:cifs_ioctl loc:74 coverage:0 access:unknown manual_desc:false auto_desc:false file:fs/smb/client/ioctl.c subsystem:cifs -IOCTL COMEDI_BUFCONFIG func:comedi_unlocked_ioctl loc:714 coverage:27 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_BUFINFO func:comedi_unlocked_ioctl loc:835 coverage:26 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_CANCEL func:comedi_unlocked_ioctl loc:647 coverage:30 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_CHANINFO func:comedi_unlocked_ioctl loc:672 coverage:29 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_CMD func:comedi_unlocked_ioctl loc:857 coverage:25 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_CMDTEST func:comedi_unlocked_ioctl loc:770 coverage:26 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_DEVINFO func:comedi_unlocked_ioctl loc:661 coverage:29 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_INSN func:comedi_unlocked_ioctl loc:999 coverage:21 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_INSNLIST func:comedi_unlocked_ioctl loc:1029 coverage:21 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_LOCK func:comedi_unlocked_ioctl loc:648 coverage:30 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_POLL func:comedi_unlocked_ioctl loc:648 coverage:30 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_RANGEINFO func:comedi_unlocked_ioctl loc:672 coverage:29 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_SETRSUBD func:comedi_unlocked_ioctl loc:656 coverage:30 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_SETWSUBD func:comedi_unlocked_ioctl loc:656 coverage:30 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_SUBDINFO func:comedi_unlocked_ioctl loc:689 coverage:28 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel -IOCTL COMEDI_UNLOCK func:comedi_unlocked_ioctl loc:648 coverage:30 access:unknown manual_desc:false auto_desc:true file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_BUFCONFIG func:comedi_unlocked_ioctl loc:714 coverage:27 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_BUFINFO func:comedi_unlocked_ioctl loc:835 coverage:26 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_CANCEL func:comedi_unlocked_ioctl loc:647 coverage:30 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_CHANINFO func:comedi_unlocked_ioctl loc:672 coverage:29 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_CMD func:comedi_unlocked_ioctl loc:857 coverage:25 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_CMDTEST func:comedi_unlocked_ioctl loc:770 coverage:26 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_DEVINFO func:comedi_unlocked_ioctl loc:661 coverage:29 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_INSN func:comedi_unlocked_ioctl loc:999 coverage:21 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_INSNLIST func:comedi_unlocked_ioctl loc:1029 coverage:21 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_LOCK func:comedi_unlocked_ioctl loc:648 coverage:30 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_POLL func:comedi_unlocked_ioctl loc:648 coverage:30 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_RANGEINFO func:comedi_unlocked_ioctl loc:672 coverage:29 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_SETRSUBD func:comedi_unlocked_ioctl loc:656 coverage:30 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_SETWSUBD func:comedi_unlocked_ioctl loc:656 coverage:30 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_SUBDINFO func:comedi_unlocked_ioctl loc:689 coverage:28 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel +IOCTL COMEDI_UNLOCK func:comedi_unlocked_ioctl loc:648 coverage:30 access:unknown manual_desc:false auto_desc:false file:drivers/comedi/comedi_fops.c subsystem:kernel IOCTL COUNTER_ADD_WATCH_IOCTL func:counter_chrdev_ioctl loc:258 coverage:0 access:unknown manual_desc:false auto_desc:false file:drivers/counter/counter-chrdev.c subsystem:iio IOCTL COUNTER_DISABLE_EVENTS_IOCTL func:counter_chrdev_ioctl loc:258 coverage:0 access:unknown manual_desc:false auto_desc:false file:drivers/counter/counter-chrdev.c subsystem:iio IOCTL COUNTER_ENABLE_EVENTS_IOCTL func:counter_chrdev_ioctl loc:258 coverage:0 access:unknown manual_desc:false auto_desc:false file:drivers/counter/counter-chrdev.c subsystem:iio diff --git a/tools/syz-declextract/testdata/file_operations.c.probe b/tools/syz-declextract/testdata/file_operations.c.probe index dbc15f826..8020b4943 100644 --- a/tools/syz-declextract/testdata/file_operations.c.probe +++ b/tools/syz-declextract/testdata/file_operations.c.probe @@ -6,10 +6,10 @@ } ], "PCs": [ - {"Func": "foo_open"}, - {"Func": "foo_read"}, - {"Func": "foo_write"}, - {"Func": "foo_mmap"}, - {"Func": "foo_ioctl"} + {"File": "file_operations.c", "Func": "foo_open"}, + {"File": "file_operations.c", "Func": "foo_read"}, + {"File": "file_operations.c", "Func": "foo_write"}, + {"File": "file_operations.c", "Func": "foo_mmap"}, + {"File": "file_operations.c", "Func": "foo_ioctl"} ] } -- cgit mrf-deployment