aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/linux/socket_netlink_generic_80211.txt.warn11
-rw-r--r--sys/linux/socket_netlink_generic_devlink.txt.warn2
-rw-r--r--sys/linux/socket_netlink_generic_team.txt.warn3
-rw-r--r--sys/linux/socket_netlink_generic_wireguard.txt.warn2
-rw-r--r--sys/linux/socket_netlink_netfilter_conntrack.txt.warn2
-rw-r--r--sys/linux/socket_netlink_netfilter_nftables.txt.warn1
-rw-r--r--sys/linux/socket_netlink_netfilter_osf.txt.warn1
-rw-r--r--sys/linux/socket_netlink_rdma.txt.warn2
-rw-r--r--sys/linux/socket_netlink_route.txt.warn2
-rw-r--r--tools/syz-check/check.go39
10 files changed, 19 insertions, 46 deletions
diff --git a/sys/linux/socket_netlink_generic_80211.txt.warn b/sys/linux/socket_netlink_generic_80211.txt.warn
index 1df25d900..1df878b3a 100644
--- a/sys/linux/socket_netlink_generic_80211.txt.warn
+++ b/sys/linux/socket_netlink_generic_80211.txt.warn
@@ -1,10 +1,8 @@
no-such-struct: msg_nl80211_payload
no-such-struct: nl80211_wdev
-no-such-struct: mntr_flags_policy
bad-netlink-attr: nl80211_policy$cmd_key.NL80211_ATTR_KEY_DATA_WEP104: duplicate attribute
bad-netlink-attr: nl80211_key_policy.NL80211_KEY_DATA_WEP104: duplicate attribute
bad-netlink-attr: he_obss_pd_policy: missing attributes: [3 4 5 6]
-no-such-struct: he_obss_pd_policy
no-such-netlink-policy: nl80211_tx_rates_policy
no-such-struct: nl80211_ht_rate
bad-netlink-attr: nl80211_txattr_policy: missing attributes: [5 6 7]
@@ -18,18 +16,9 @@ bad-netlink-attr: nl80211_policy$connect.NL80211_ATTR_WIPHY_EDMG_BW_CONFIG: bad
bad-netlink-attr: nl80211_pmsr_ftm_req_attr_policy: missing attributes: [12]
no-such-netlink-policy: nl80211_psmr_peer_attr_policy
bad-netlink-attr: nl80211_pmsr_attr_policy.NL80211_PMSR_ATTR_PEERS: unhandled type NLA_NESTED_ARRAY
-no-such-struct: nl80211_policy$del_nan_func
-no-such-struct: nl80211_policy$probe_client
-no-such-struct: nl80211_policy$set_mcast_rate
-no-such-struct: nl80211_policy$set_mcast_to_ucast
-no-such-struct: nl80211_policy$set_noack_map
-no-such-struct: nl80211_policy$del_pmk
bad-netlink-attr: nl80211_policy$setdel_pmksa.NL80211_ATTR_FILS_CACHE_ID: bad min value 0, expect 2
-no-such-struct: nl80211_policy$cookie
-no-such-struct: nl80211_policy$power_save
no-such-struct: nl80211_qos_map_dscp_exception
no-such-netlink-policy: nl80211_cqm
-no-such-struct: nl80211_policy$set_wds_peer
bad-netlink-attr: nl80211_tid_config_attr_policy.NL80211_TID_CONFIG_ATTR_RETRY_SHORT: bad max value 255, expect 0
bad-netlink-attr: nl80211_tid_config_attr_policy.NL80211_TID_CONFIG_ATTR_RETRY_LONG: bad max value 255, expect 0
bad-netlink-attr: nl80211_policy$set_tid_config.NL80211_ATTR_TID_CONFIG: unhandled type NLA_NESTED_ARRAY
diff --git a/sys/linux/socket_netlink_generic_devlink.txt.warn b/sys/linux/socket_netlink_generic_devlink.txt.warn
index be7dfccaf..fe1528485 100644
--- a/sys/linux/socket_netlink_generic_devlink.txt.warn
+++ b/sys/linux/socket_netlink_generic_devlink.txt.warn
@@ -1,4 +1,2 @@
no-such-struct: devlink_devname
-no-such-struct: devlink_nl_policy$nsim
bad-netlink-attr: devlink_nl_policy$nsim.DEVLINK_ATTR_DEV_NAME: expect string
-no-such-struct: devlink_nl_policy$pci
diff --git a/sys/linux/socket_netlink_generic_team.txt.warn b/sys/linux/socket_netlink_generic_team.txt.warn
index 334524612..44e55cb31 100644
--- a/sys/linux/socket_netlink_generic_team.txt.warn
+++ b/sys/linux/socket_netlink_generic_team.txt.warn
@@ -1,5 +1,2 @@
bad-netlink-attr: team_nl_policy: missing attributes: [3]
-no-such-struct: team_nl_option_policy
-no-such-struct: team_nl_option_policy$per_port
bad-netlink-attr: team_nl_option_policy$array: missing attributes: [2]
-no-such-struct: team_nl_option_policy$array
diff --git a/sys/linux/socket_netlink_generic_wireguard.txt.warn b/sys/linux/socket_netlink_generic_wireguard.txt.warn
index d5c5b8c71..7e50b7875 100644
--- a/sys/linux/socket_netlink_generic_wireguard.txt.warn
+++ b/sys/linux/socket_netlink_generic_wireguard.txt.warn
@@ -1,7 +1,5 @@
bad-netlink-attr: device_policy: missing attributes: [4]
bad-netlink-attr: peer_policy: missing attributes: [6 7 8]
bad-netlink-attr: peer_policy.WGPEER_A_ENDPOINT6: duplicate attribute
-no-such-struct: allowedip_policy$ipv4
-no-such-struct: allowedip_policy$ipv6
no-such-struct: wireguard_private_key
no-such-struct: wireguard_public_key
diff --git a/sys/linux/socket_netlink_netfilter_conntrack.txt.warn b/sys/linux/socket_netlink_netfilter_conntrack.txt.warn
index 18ca2802d..7a12cf487 100644
--- a/sys/linux/socket_netlink_netfilter_conntrack.txt.warn
+++ b/sys/linux/socket_netlink_netfilter_conntrack.txt.warn
@@ -1,3 +1 @@
bad-netlink-attr: ct_nla_policy: missing attributes: [25 26]
-no-such-struct: cta_ip_nla_policy$ipv4
-no-such-struct: cta_ip_nla_policy$ipv6
diff --git a/sys/linux/socket_netlink_netfilter_nftables.txt.warn b/sys/linux/socket_netlink_netfilter_nftables.txt.warn
index b6232942f..ba58f9b22 100644
--- a/sys/linux/socket_netlink_netfilter_nftables.txt.warn
+++ b/sys/linux/socket_netlink_netfilter_nftables.txt.warn
@@ -11,5 +11,4 @@ bad-netlink-attr: nft_verdict_policy: missing attributes: [3]
bad-netlink-attr: nft_obj_policy: missing attributes: [8]
bad-netlink-attr: nft_bitwise_policy: missing attributes: [6 7]
bad-netlink-attr: nft_dynset_policy: missing attributes: [10]
-no-such-struct: nft_flow_offload_policy
bad-netlink-attr: nft_socket_policy: missing attributes: [3]
diff --git a/sys/linux/socket_netlink_netfilter_osf.txt.warn b/sys/linux/socket_netlink_netfilter_osf.txt.warn
deleted file mode 100644
index 376107d01..000000000
--- a/sys/linux/socket_netlink_netfilter_osf.txt.warn
+++ /dev/null
@@ -1 +0,0 @@
-no-such-struct: nfnl_osf_policy
diff --git a/sys/linux/socket_netlink_rdma.txt.warn b/sys/linux/socket_netlink_rdma.txt.warn
deleted file mode 100644
index 7551b6af7..000000000
--- a/sys/linux/socket_netlink_rdma.txt.warn
+++ /dev/null
@@ -1,2 +0,0 @@
-no-such-struct: nldev_policy$NEWLINK
-no-such-struct: nldev_policy$PORT_GET
diff --git a/sys/linux/socket_netlink_route.txt.warn b/sys/linux/socket_netlink_route.txt.warn
index 8c1942a12..fd66ec004 100644
--- a/sys/linux/socket_netlink_route.txt.warn
+++ b/sys/linux/socket_netlink_route.txt.warn
@@ -1,7 +1,6 @@
bad-netlink-attr: ifla_policy.IFLA_IFALIASn: duplicate attribute
no-such-netlink-policy: ifla_af_spec_policy
bad-netlink-attr: ifla_info_policy$t: missing attributes: [4]
-no-such-struct: ifla_info_policy$t
no-such-netlink-policy: batadv_policy
bad-netlink-attr: macvlan_policy: missing attributes: [6 7]
bad-netlink-attr: hsr_policy: missing attributes: [7]
@@ -19,7 +18,6 @@ no-such-netlink-policy: fib6_rule_policy
bad-netlink-attr: nda_policy: missing attributes: [12 13 14]
bad-netlink-attr: nda_policy.NDA_DST_IPV6: duplicate attribute
bad-netlink-attr: nda_policy.NDA_DST_MAC: duplicate attribute
-no-such-struct: br_vlan_db_dump_pol
bad-netlink-attr: br_vlan_db_policy: missing attributes: [6]
no-such-netlink-policy: br_mdb_policy
no-such-struct: br_mdb_entry_sub
diff --git a/tools/syz-check/check.go b/tools/syz-check/check.go
index 63606d23a..2634f27f7 100644
--- a/tools/syz-check/check.go
+++ b/tools/syz-check/check.go
@@ -213,6 +213,9 @@ func checkImpl(structs map[string]*dwarf.StructType, structTypes []prog.Type,
if astStruct == nil {
continue
}
+ if _, ok := isNetlinkPolicy(typ); ok {
+ continue // netlink policies are not structs even if we describe them as structs
+ }
// In some cases we split a single struct into multiple ones
// (more precise description), so try to match our foo$bar with kernel foo.
kernelStruct := structs[name]
@@ -409,14 +412,8 @@ func checkNetlinkStruct(locs map[string]*ast.Struct, symbols map[string][]symbol
if astStruct == nil {
return nil, nil
}
- var fields []prog.Field
- switch t := typ.(type) {
- case *prog.StructType:
- fields = t.Fields
- case *prog.UnionType:
- fields = t.Fields
- }
- if !isNetlinkPolicy(fields) {
+ fields, ok := isNetlinkPolicy(typ)
+ if !ok {
return nil, nil
}
// In some cases we split a single policy into multiple ones (more precise description),
@@ -513,7 +510,16 @@ func checkMissingAttrs(checkedAttrs map[string]*checkAttr) []Warn {
return warnings
}
-func isNetlinkPolicy(fields []prog.Field) bool {
+func isNetlinkPolicy(typ prog.Type) ([]prog.Field, bool) {
+ var fields []prog.Field
+ switch t := typ.(type) {
+ case *prog.StructType:
+ fields = t.Fields
+ case *prog.UnionType:
+ fields = t.Fields
+ default:
+ return nil, false
+ }
haveAttr := false
for _, fld := range fields {
field := fld.Type
@@ -527,19 +533,12 @@ func isNetlinkPolicy(fields []prog.Field) bool {
if arr, ok := field.(*prog.ArrayType); ok {
field = arr.Elem
}
- if field1, ok := field.(*prog.StructType); ok {
- if isNetlinkPolicy(field1.Fields) {
- continue
- }
- }
- if field1, ok := field.(*prog.UnionType); ok {
- if isNetlinkPolicy(field1.Fields) {
- continue
- }
+ if _, ok := isNetlinkPolicy(field); ok {
+ continue
}
- return false
+ return nil, false
}
- return haveAttr
+ return fields, haveAttr
}
const (