* [mac80211-next:rtnl 1/1] net/wireless/nl80211.c:3105 nl80211_set_wiphy() error: we previously assumed 'rdev' could be null (see line 3085)
@ 2020-08-24 11:18 Dan Carpenter
0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2020-08-24 11:18 UTC (permalink / raw)
To: kbuild, Johannes Berg; +Cc: lkp, kbuild-all, linux-wireless
[-- Attachment #1: Type: text/plain, Size: 7721 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git rtnl
head: 7f96dd365770550bef6f09757774788e87b5f92e
commit: 7f96dd365770550bef6f09757774788e87b5f92e [1/1] cfg80211: avoid holding the RTNL when calling the driver
config: i386-randconfig-m021-20200820 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
net/wireless/nl80211.c:3105 nl80211_set_wiphy() error: we previously assumed 'rdev' could be null (see line 3085)
net/wireless/nl80211.c:8999 nl80211_channel_switch() error: uninitialized symbol 'csa_attrs'.
# https://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git/commit/?id=7f96dd365770550bef6f09757774788e87b5f92e
git remote add mac80211-next https://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
git fetch --no-tags mac80211-next rtnl
git checkout 7f96dd365770550bef6f09757774788e87b5f92e
vim +/rdev +3105 net/wireless/nl80211.c
556829657397b9b Johannes Berg 2007-09-20 3038 static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
556829657397b9b Johannes Berg 2007-09-20 3039 {
7f96dd365770550 Johannes Berg 2019-08-01 3040 struct cfg80211_registered_device *rdev = NULL;
f444de05d20e27c Johannes Berg 2010-05-05 3041 struct net_device *netdev = NULL;
f444de05d20e27c Johannes Berg 2010-05-05 3042 struct wireless_dev *wdev;
a1e567c83f54143 Bill Jordan 2010-09-10 3043 int result = 0, rem_txq_params = 0;
318884875bdddca Jouni Malinen 2008-10-30 3044 struct nlattr *nl_txq_params;
b9a5f8cab751d36 Jouni Malinen 2009-04-20 3045 u32 changed;
b9a5f8cab751d36 Jouni Malinen 2009-04-20 3046 u8 retry_short = 0, retry_long = 0;
b9a5f8cab751d36 Jouni Malinen 2009-04-20 3047 u32 frag_threshold = 0, rts_threshold = 0;
81077e82c3f5915 Lukáš Turek 2009-12-21 3048 u8 coverage_class = 0;
52539ca89f365d3 Toke Høiland-Jørgensen 2018-05-08 3049 u32 txq_limit = 0, txq_memory_limit = 0, txq_quantum = 0;
556829657397b9b Johannes Berg 2007-09-20 3050
7f96dd365770550 Johannes Berg 2019-08-01 3051 rtnl_lock();
f444de05d20e27c Johannes Berg 2010-05-05 3052 /*
f444de05d20e27c Johannes Berg 2010-05-05 3053 * Try to find the wiphy and netdev. Normally this
f444de05d20e27c Johannes Berg 2010-05-05 3054 * function shouldn't need the netdev, but this is
f444de05d20e27c Johannes Berg 2010-05-05 3055 * done for backward compatibility -- previously
f444de05d20e27c Johannes Berg 2010-05-05 3056 * setting the channel was done per wiphy, but now
f444de05d20e27c Johannes Berg 2010-05-05 3057 * it is per netdev. Previous userland like hostapd
f444de05d20e27c Johannes Berg 2010-05-05 3058 * also passed a netdev to set_wiphy, so that it is
f444de05d20e27c Johannes Berg 2010-05-05 3059 * possible to let that go to the right netdev!
f444de05d20e27c Johannes Berg 2010-05-05 3060 */
4bbf4d56583dd52 Johannes Berg 2009-03-24 3061
f444de05d20e27c Johannes Berg 2010-05-05 3062 if (info->attrs[NL80211_ATTR_IFINDEX]) {
f444de05d20e27c Johannes Berg 2010-05-05 3063 int ifindex = nla_get_u32(info->attrs[NL80211_ATTR_IFINDEX]);
f444de05d20e27c Johannes Berg 2010-05-05 3064
7f2b8562c2ee6e2 Ying Xue 2014-01-15 3065 netdev = __dev_get_by_index(genl_info_net(info), ifindex);
5fe231e873729fa Johannes Berg 2013-05-08 3066 if (netdev && netdev->ieee80211_ptr)
f26cbf401be935e Zhao, Gang 2014-04-21 3067 rdev = wiphy_to_rdev(netdev->ieee80211_ptr->wiphy);
5fe231e873729fa Johannes Berg 2013-05-08 3068 else
f444de05d20e27c Johannes Berg 2010-05-05 3069 netdev = NULL;
f444de05d20e27c Johannes Berg 2010-05-05 3070 }
f444de05d20e27c Johannes Berg 2010-05-05 3071
f444de05d20e27c Johannes Berg 2010-05-05 3072 if (!netdev) {
878d9ec7367816d Johannes Berg 2012-06-15 3073 rdev = __cfg80211_rdev_from_attrs(genl_info_net(info),
878d9ec7367816d Johannes Berg 2012-06-15 3074 info->attrs);
7f96dd365770550 Johannes Berg 2019-08-01 3075 if (IS_ERR(rdev)) {
7f96dd365770550 Johannes Berg 2019-08-01 3076 rtnl_unlock();
4c476991062a0a5 Johannes Berg 2010-10-04 3077 return PTR_ERR(rdev);
7f96dd365770550 Johannes Berg 2019-08-01 3078 }
f444de05d20e27c Johannes Berg 2010-05-05 3079 wdev = NULL;
f444de05d20e27c Johannes Berg 2010-05-05 3080 netdev = NULL;
f444de05d20e27c Johannes Berg 2010-05-05 3081 result = 0;
71fe96bf9db8b11 Johannes Berg 2012-10-24 3082 } else
f444de05d20e27c Johannes Berg 2010-05-05 3083 wdev = netdev->ieee80211_ptr;
f444de05d20e27c Johannes Berg 2010-05-05 3084
7f96dd365770550 Johannes Berg 2019-08-01 @3085 if (rdev)
^^^^
Check for NULL
7f96dd365770550 Johannes Berg 2019-08-01 3086 mutex_lock(&rdev->wiphy.mtx);
7f96dd365770550 Johannes Berg 2019-08-01 3087 rtnl_unlock();
7f96dd365770550 Johannes Berg 2019-08-01 3088
f444de05d20e27c Johannes Berg 2010-05-05 3089 /*
f444de05d20e27c Johannes Berg 2010-05-05 3090 * end workaround code, by now the rdev is available
f444de05d20e27c Johannes Berg 2010-05-05 3091 * and locked, and wdev may or may not be NULL.
f444de05d20e27c Johannes Berg 2010-05-05 3092 */
4bbf4d56583dd52 Johannes Berg 2009-03-24 3093
4bbf4d56583dd52 Johannes Berg 2009-03-24 3094 if (info->attrs[NL80211_ATTR_WIPHY_NAME])
318884875bdddca Jouni Malinen 2008-10-30 3095 result = cfg80211_dev_rename(
318884875bdddca Jouni Malinen 2008-10-30 3096 rdev, nla_data(info->attrs[NL80211_ATTR_WIPHY_NAME]));
4bbf4d56583dd52 Johannes Berg 2009-03-24 3097
318884875bdddca Jouni Malinen 2008-10-30 3098 if (result)
7f96dd365770550 Johannes Berg 2019-08-01 3099 goto out;
318884875bdddca Jouni Malinen 2008-10-30 3100
318884875bdddca Jouni Malinen 2008-10-30 3101 if (info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS]) {
318884875bdddca Jouni Malinen 2008-10-30 3102 struct ieee80211_txq_params txq_params;
318884875bdddca Jouni Malinen 2008-10-30 3103 struct nlattr *tb[NL80211_TXQ_ATTR_MAX + 1];
318884875bdddca Jouni Malinen 2008-10-30 3104
7f96dd365770550 Johannes Berg 2019-08-01 @3105 if (!rdev->ops->set_txq_params) {
^^^^^^^^^
Unchecked dereference
7f96dd365770550 Johannes Berg 2019-08-01 3106 result = -EOPNOTSUPP;
7f96dd365770550 Johannes Berg 2019-08-01 3107 goto out;
7f96dd365770550 Johannes Berg 2019-08-01 3108 }
318884875bdddca Jouni Malinen 2008-10-30 3109
7f96dd365770550 Johannes Berg 2019-08-01 3110 if (!netdev) {
7f96dd365770550 Johannes Berg 2019-08-01 3111 result = -EINVAL;
7f96dd365770550 Johannes Berg 2019-08-01 3112 goto out;
7f96dd365770550 Johannes Berg 2019-08-01 3113 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 39030 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-08-24 11:20 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-08-24 11:18 [mac80211-next:rtnl 1/1] net/wireless/nl80211.c:3105 nl80211_set_wiphy() error: we previously assumed 'rdev' could be null (see line 3085) Dan Carpenter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).