Yes,the OEM project we are working on is based on a qualcomm chip qcs410, in this BSP, we integrate an out-of-tree WiFi driver for WCN3980 (https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0), this driver is also used in the qualcomm Android kernel, this driver has more features than linux in-tree drivers. And in qcacld-3.0 driver, there are many wiphy features are set netlink attribute NESTED flag (please see the log below), so with the kernel 5.2 and later version, the validate_nla() will check if the netlink message set the NLA_F_NESTED or not, if not set, the validation will fail for qcacld-3.0 driver.
And this change is safe for in-tree drivers, since these drivers don't have netlink attribute NESTED flag, the validate_nla() will not be impacted even we set NLA_F_NESTED to the netlink messages.
Yes,the OEM project we are working on is based on a qualcomm chip qcs410, in this BSP, we integrate an out-of-tree WiFi driver for WCN3980 (https:/ /git.codelinaro .org/clo/ la/platform/ vendor/ qcom-opensource /wlan/qcacld- 3.0), this driver is also used in the qualcomm Android kernel, this driver has more features than linux in-tree drivers. And in qcacld-3.0 driver, there are many wiphy features are set netlink attribute NESTED flag (please see the log below), so with the kernel 5.2 and later version, the validate_nla() will check if the netlink message set the NLA_F_NESTED or not, if not set, the validation will fail for qcacld-3.0 driver.
And this change is safe for in-tree drivers, since these drivers don't have netlink attribute NESTED flag, the validate_nla() will not be impacted even we set NLA_F_NESTED to the netlink messages.
wlan/qcacld- 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: [PARAM_SSID_LIST] = { .type = NLA_NESTED }, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: [PARAM_BSSID_PREFS] = { .type = NLA_NESTED }, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: [PARAM_ BSSID_PARAMS] = {.type = NLA_NESTED}, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: [PARAM_ ROAM_CONTROL_ CONFIG] = {.type = NLA_NESTED}, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: [PARAM_ SCAN_FREQ_ LIST] = {.type = NLA_NESTED}, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: [PARAM_ FREQ_LIST_ SCHEME] = {.type = NLA_NESTED}, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: [QCA_ATTR_ ROAM_CONTROL_ SELECTION_ CRITERIA] = {.type = NLA_NESTED}, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: .type = NLA_NESTED}, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: .type = NLA_NESTED}, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: .type = NLA_NESTED}, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: .type = NLA_NESTED}, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: [SET_CHAN_ CHAN_LIST] = {.type = NLA_NESTED}, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: [SET_CHAN_ FREQ_LIST] = {.type = NLA_NESTED}, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: [STATS_ SET_DATA_ PKT_INFO] = {.type = NLA_NESTED }, 3.0/core/ hdd/src/ wlan_hdd_ cfg80211. c: VENDOR_ NLA_POLICY_ NESTED( qca_wlan_ vendor_ set_trace_ level_policy) ,
wlan/qcacld-
wlan/qcacld-
wlan/qcacld-
wlan/qcacld-
wlan/qcacld-
wlan/qcacld-
wlan/qcacld-
wlan/qcacld-
wlan/qcacld-
wlan/qcacld-
wlan/qcacld-
wlan/qcacld-
wlan/qcacld-
wlan/qcacld-