Message ID | 1674845256-4300-1-git-send-email-quic_vganneva@quicinc.com |
---|---|
State | Superseded |
Headers | show |
Series | [v2] nl80211: Allow authentication frames and set keys on NAN interface | expand |
Hi Vinay,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on wireless-next/main]
[also build test WARNING on wireless/main linus/master v6.2-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Vinay-Gannevaram/nl80211-Allow-authentication-frames-and-set-keys-on-NAN-interface/20230128-145815
base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link: https://lore.kernel.org/r/1674845256-4300-1-git-send-email-quic_vganneva%40quicinc.com
patch subject: [PATCH v2] nl80211: Allow authentication frames and set keys on NAN interface
config: hexagon-randconfig-r041-20230123 (https://download.01.org/0day-ci/archive/20230128/202301282020.R7v2wcBQ-lkp@intel.com/config)
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 4196ca3278f78c6e19246e54ab0ecb364e37d66a)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/954d2dd8f85ced417476083a99011b8920d68161
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Vinay-Gannevaram/nl80211-Allow-authentication-frames-and-set-keys-on-NAN-interface/20230128-145815
git checkout 954d2dd8f85ced417476083a99011b8920d68161
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash net/wireless/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
In file included from net/wireless/nl80211.c:16:
In file included from include/linux/if_ether.h:19:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:12:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
^
In file included from net/wireless/nl80211.c:16:
In file included from include/linux/if_ether.h:19:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:12:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
^
In file included from net/wireless/nl80211.c:16:
In file included from include/linux/if_ether.h:19:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:12:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
>> net/wireless/nl80211.c:1555:2: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
case NL80211_IFTYPE_UNSPECIFIED:
^
net/wireless/nl80211.c:1555:2: note: insert '__attribute__((fallthrough));' to silence this warning
case NL80211_IFTYPE_UNSPECIFIED:
^
__attribute__((fallthrough));
net/wireless/nl80211.c:1555:2: note: insert 'break;' to avoid fall-through
case NL80211_IFTYPE_UNSPECIFIED:
^
break;
net/wireless/nl80211.c:12262:2: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
default:
^
net/wireless/nl80211.c:12262:2: note: insert '__attribute__((fallthrough));' to silence this warning
default:
^
__attribute__((fallthrough));
net/wireless/nl80211.c:12262:2: note: insert 'break;' to avoid fall-through
default:
^
break;
net/wireless/nl80211.c:12322:2: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
default:
^
net/wireless/nl80211.c:12322:2: note: insert '__attribute__((fallthrough));' to silence this warning
default:
^
__attribute__((fallthrough));
net/wireless/nl80211.c:12322:2: note: insert 'break;' to avoid fall-through
default:
^
break;
net/wireless/nl80211.c:12462:2: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
default:
^
net/wireless/nl80211.c:12462:2: note: insert '__attribute__((fallthrough));' to silence this warning
default:
^
__attribute__((fallthrough));
net/wireless/nl80211.c:12462:2: note: insert 'break;' to avoid fall-through
default:
^
break;
10 warnings generated.
vim +1555 net/wireless/nl80211.c
fffd0934b9390f Johannes Berg 2009-07-08 1531
fffd0934b9390f Johannes Berg 2009-07-08 1532 static int nl80211_key_allowed(struct wireless_dev *wdev)
fffd0934b9390f Johannes Berg 2009-07-08 1533 {
fffd0934b9390f Johannes Berg 2009-07-08 1534 ASSERT_WDEV_LOCK(wdev);
fffd0934b9390f Johannes Berg 2009-07-08 1535
fffd0934b9390f Johannes Berg 2009-07-08 1536 switch (wdev->iftype) {
fffd0934b9390f Johannes Berg 2009-07-08 1537 case NL80211_IFTYPE_AP:
fffd0934b9390f Johannes Berg 2009-07-08 1538 case NL80211_IFTYPE_AP_VLAN:
074ac8df9f93f2 Johannes Berg 2010-09-16 1539 case NL80211_IFTYPE_P2P_GO:
ff973af74aa693 Thomas Pedersen 2011-05-03 1540 case NL80211_IFTYPE_MESH_POINT:
fffd0934b9390f Johannes Berg 2009-07-08 1541 break;
fffd0934b9390f Johannes Berg 2009-07-08 1542 case NL80211_IFTYPE_ADHOC:
7b0a0e3c3a8826 Johannes Berg 2022-04-14 1543 if (wdev->u.ibss.current_bss)
7b0a0e3c3a8826 Johannes Berg 2022-04-14 1544 return 0;
7b0a0e3c3a8826 Johannes Berg 2022-04-14 1545 return -ENOLINK;
fffd0934b9390f Johannes Berg 2009-07-08 1546 case NL80211_IFTYPE_STATION:
074ac8df9f93f2 Johannes Berg 2010-09-16 1547 case NL80211_IFTYPE_P2P_CLIENT:
7b0a0e3c3a8826 Johannes Berg 2022-04-14 1548 if (wdev->connected)
7b0a0e3c3a8826 Johannes Berg 2022-04-14 1549 return 0;
fffd0934b9390f Johannes Berg 2009-07-08 1550 return -ENOLINK;
954d2dd8f85ced Vinay Gannevaram 2023-01-28 1551 case NL80211_IFTYPE_NAN:
954d2dd8f85ced Vinay Gannevaram 2023-01-28 1552 if (wiphy_ext_feature_isset(wdev->wiphy,
954d2dd8f85ced Vinay Gannevaram 2023-01-28 1553 NL80211_EXT_FEATURE_SECURE_NAN))
954d2dd8f85ced Vinay Gannevaram 2023-01-28 1554 return 0;
de4fcbadde68e3 Johannes Berg 2014-10-31 @1555 case NL80211_IFTYPE_UNSPECIFIED:
6e0bd6c35b021d Rostislav Lisovy 2014-11-03 1556 case NL80211_IFTYPE_OCB:
de4fcbadde68e3 Johannes Berg 2014-10-31 1557 case NL80211_IFTYPE_MONITOR:
de4fcbadde68e3 Johannes Berg 2014-10-31 1558 case NL80211_IFTYPE_P2P_DEVICE:
de4fcbadde68e3 Johannes Berg 2014-10-31 1559 case NL80211_IFTYPE_WDS:
de4fcbadde68e3 Johannes Berg 2014-10-31 1560 case NUM_NL80211_IFTYPES:
fffd0934b9390f Johannes Berg 2009-07-08 1561 return -EINVAL;
fffd0934b9390f Johannes Berg 2009-07-08 1562 }
fffd0934b9390f Johannes Berg 2009-07-08 1563
fffd0934b9390f Johannes Berg 2009-07-08 1564 return 0;
fffd0934b9390f Johannes Berg 2009-07-08 1565 }
fffd0934b9390f Johannes Berg 2009-07-08 1566
Hi Vinay,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on wireless-next/main]
[also build test WARNING on wireless/main linus/master v6.2-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Vinay-Gannevaram/nl80211-Allow-authentication-frames-and-set-keys-on-NAN-interface/20230128-145815
base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link: https://lore.kernel.org/r/1674845256-4300-1-git-send-email-quic_vganneva%40quicinc.com
patch subject: [PATCH v2] nl80211: Allow authentication frames and set keys on NAN interface
config: mips-buildonly-randconfig-r005-20230123 (https://download.01.org/0day-ci/archive/20230128/202301282105.N0kd49zG-lkp@intel.com/config)
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 4196ca3278f78c6e19246e54ab0ecb364e37d66a)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install mips cross compiling tool for clang build
# apt-get install binutils-mips-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/954d2dd8f85ced417476083a99011b8920d68161
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Vinay-Gannevaram/nl80211-Allow-authentication-frames-and-set-keys-on-NAN-interface/20230128-145815
git checkout 954d2dd8f85ced417476083a99011b8920d68161
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash net/wireless/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> net/wireless/nl80211.c:1555:2: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
case NL80211_IFTYPE_UNSPECIFIED:
^
net/wireless/nl80211.c:1555:2: note: insert '__attribute__((fallthrough));' to silence this warning
case NL80211_IFTYPE_UNSPECIFIED:
^
__attribute__((fallthrough));
net/wireless/nl80211.c:1555:2: note: insert 'break;' to avoid fall-through
case NL80211_IFTYPE_UNSPECIFIED:
^
break;
net/wireless/nl80211.c:12262:2: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
default:
^
net/wireless/nl80211.c:12262:2: note: insert '__attribute__((fallthrough));' to silence this warning
default:
^
__attribute__((fallthrough));
net/wireless/nl80211.c:12262:2: note: insert 'break;' to avoid fall-through
default:
^
break;
net/wireless/nl80211.c:12322:2: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
default:
^
net/wireless/nl80211.c:12322:2: note: insert '__attribute__((fallthrough));' to silence this warning
default:
^
__attribute__((fallthrough));
net/wireless/nl80211.c:12322:2: note: insert 'break;' to avoid fall-through
default:
^
break;
net/wireless/nl80211.c:12462:2: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
default:
^
net/wireless/nl80211.c:12462:2: note: insert '__attribute__((fallthrough));' to silence this warning
default:
^
__attribute__((fallthrough));
net/wireless/nl80211.c:12462:2: note: insert 'break;' to avoid fall-through
default:
^
break;
4 warnings generated.
vim +1555 net/wireless/nl80211.c
fffd0934b9390f Johannes Berg 2009-07-08 1531
fffd0934b9390f Johannes Berg 2009-07-08 1532 static int nl80211_key_allowed(struct wireless_dev *wdev)
fffd0934b9390f Johannes Berg 2009-07-08 1533 {
fffd0934b9390f Johannes Berg 2009-07-08 1534 ASSERT_WDEV_LOCK(wdev);
fffd0934b9390f Johannes Berg 2009-07-08 1535
fffd0934b9390f Johannes Berg 2009-07-08 1536 switch (wdev->iftype) {
fffd0934b9390f Johannes Berg 2009-07-08 1537 case NL80211_IFTYPE_AP:
fffd0934b9390f Johannes Berg 2009-07-08 1538 case NL80211_IFTYPE_AP_VLAN:
074ac8df9f93f2 Johannes Berg 2010-09-16 1539 case NL80211_IFTYPE_P2P_GO:
ff973af74aa693 Thomas Pedersen 2011-05-03 1540 case NL80211_IFTYPE_MESH_POINT:
fffd0934b9390f Johannes Berg 2009-07-08 1541 break;
fffd0934b9390f Johannes Berg 2009-07-08 1542 case NL80211_IFTYPE_ADHOC:
7b0a0e3c3a8826 Johannes Berg 2022-04-14 1543 if (wdev->u.ibss.current_bss)
7b0a0e3c3a8826 Johannes Berg 2022-04-14 1544 return 0;
7b0a0e3c3a8826 Johannes Berg 2022-04-14 1545 return -ENOLINK;
fffd0934b9390f Johannes Berg 2009-07-08 1546 case NL80211_IFTYPE_STATION:
074ac8df9f93f2 Johannes Berg 2010-09-16 1547 case NL80211_IFTYPE_P2P_CLIENT:
7b0a0e3c3a8826 Johannes Berg 2022-04-14 1548 if (wdev->connected)
7b0a0e3c3a8826 Johannes Berg 2022-04-14 1549 return 0;
fffd0934b9390f Johannes Berg 2009-07-08 1550 return -ENOLINK;
954d2dd8f85ced Vinay Gannevaram 2023-01-28 1551 case NL80211_IFTYPE_NAN:
954d2dd8f85ced Vinay Gannevaram 2023-01-28 1552 if (wiphy_ext_feature_isset(wdev->wiphy,
954d2dd8f85ced Vinay Gannevaram 2023-01-28 1553 NL80211_EXT_FEATURE_SECURE_NAN))
954d2dd8f85ced Vinay Gannevaram 2023-01-28 1554 return 0;
de4fcbadde68e3 Johannes Berg 2014-10-31 @1555 case NL80211_IFTYPE_UNSPECIFIED:
6e0bd6c35b021d Rostislav Lisovy 2014-11-03 1556 case NL80211_IFTYPE_OCB:
de4fcbadde68e3 Johannes Berg 2014-10-31 1557 case NL80211_IFTYPE_MONITOR:
de4fcbadde68e3 Johannes Berg 2014-10-31 1558 case NL80211_IFTYPE_P2P_DEVICE:
de4fcbadde68e3 Johannes Berg 2014-10-31 1559 case NL80211_IFTYPE_WDS:
de4fcbadde68e3 Johannes Berg 2014-10-31 1560 case NUM_NL80211_IFTYPES:
fffd0934b9390f Johannes Berg 2009-07-08 1561 return -EINVAL;
fffd0934b9390f Johannes Berg 2009-07-08 1562 }
fffd0934b9390f Johannes Berg 2009-07-08 1563
fffd0934b9390f Johannes Berg 2009-07-08 1564 return 0;
fffd0934b9390f Johannes Berg 2009-07-08 1565 }
fffd0934b9390f Johannes Berg 2009-07-08 1566
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index 8ecb0fb..07352a9 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h @@ -6296,6 +6296,10 @@ enum nl80211_feature_flags { * might apply, e.g. no scans in progress, no offchannel operations * in progress, and no active connections. * + * @NL80211_EXT_FEATURE_SECURE_NAN: Device supports NAN Pairing which enables + * authentication, data encryption and message integrity. + * + * * @NUM_NL80211_EXT_FEATURES: number of extended features. * @MAX_NL80211_EXT_FEATURES: highest extended feature index. */ @@ -6364,6 +6368,7 @@ enum nl80211_ext_feature_index { NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD, NL80211_EXT_FEATURE_RADAR_BACKGROUND, NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE, + NL80211_EXT_FEATURE_SECURE_NAN, /* add new features before the definition below */ NUM_NL80211_EXT_FEATURES, diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 64cf611..cf96d63 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -1548,10 +1548,13 @@ static int nl80211_key_allowed(struct wireless_dev *wdev) if (wdev->connected) return 0; return -ENOLINK; + case NL80211_IFTYPE_NAN: + if (wiphy_ext_feature_isset(wdev->wiphy, + NL80211_EXT_FEATURE_SECURE_NAN)) + return 0; case NL80211_IFTYPE_UNSPECIFIED: case NL80211_IFTYPE_OCB: case NL80211_IFTYPE_MONITOR: - case NL80211_IFTYPE_NAN: case NL80211_IFTYPE_P2P_DEVICE: case NL80211_IFTYPE_WDS: case NUM_NL80211_IFTYPES: @@ -12253,6 +12256,9 @@ static int nl80211_register_mgmt(struct sk_buff *skb, struct genl_info *info) case NL80211_IFTYPE_P2P_DEVICE: break; case NL80211_IFTYPE_NAN: + if (wiphy_ext_feature_isset(wdev->wiphy, + NL80211_EXT_FEATURE_SECURE_NAN)) + break; default: return -EOPNOTSUPP; } @@ -12310,6 +12316,9 @@ static int nl80211_tx_mgmt(struct sk_buff *skb, struct genl_info *info) case NL80211_IFTYPE_P2P_GO: break; case NL80211_IFTYPE_NAN: + if (wiphy_ext_feature_isset(wdev->wiphy, + NL80211_EXT_FEATURE_SECURE_NAN)) + break; default: return -EOPNOTSUPP; } @@ -12447,6 +12456,9 @@ static int nl80211_tx_mgmt_cancel_wait(struct sk_buff *skb, struct genl_info *in case NL80211_IFTYPE_P2P_DEVICE: break; case NL80211_IFTYPE_NAN: + if (wiphy_ext_feature_isset(wdev->wiphy, + NL80211_EXT_FEATURE_SECURE_NAN)) + break; default: return -EOPNOTSUPP; }
Wi-Fi Aware R4 specification defines NAN Pairing which uses PASN handshake to authenticate the peer and generate keys. Hence allow to register and transmit the PASN authentication frames on NAN interface and set the keys to driver or underlying modules on NAN interface. The driver needs to configure the feature flag NL80211_EXT_FEATURE_SECURE_NAN, which also helps userspace modules to know if the driver supports secure NAN. Signed-off-by: Vinay Gannevaram <quic_vganneva@quicinc.com> --- v2: - Add feature flag to indicate SECURE_NAN support from driver --- include/uapi/linux/nl80211.h | 5 +++++ net/wireless/nl80211.c | 14 +++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-)