From: kernel test robot <lkp@intel.com>
To: Jianglei Nie <niejianglei2021@163.com>,
pizza@shaftnet.org, kvalo@kernel.org, davem@davemloft.net,
edumazet@google.com, kuba@kernel.org, pabeni@redhat.com
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
linux-wireless@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org,
Jianglei Nie <niejianglei2021@163.com>
Subject: Re: [PATCH] cw1200: Fix memory leak in cw1200_set_key()
Date: Thu, 26 May 2022 17:02:43 +0800 [thread overview]
Message-ID: <202205261656.CWDWN8nG-lkp@intel.com> (raw)
In-Reply-To: <20220526033003.473943-1-niejianglei2021@163.com>
Hi Jianglei,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on wireless-next/main]
[also build test ERROR on wireless/main v5.18 next-20220526]
[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]
url: https://github.com/intel-lab-lkp/linux/commits/Jianglei-Nie/cw1200-Fix-memory-leak-in-cw1200_set_key/20220526-114747
base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
config: x86_64-randconfig-a003 (https://download.01.org/0day-ci/archive/20220526/202205261656.CWDWN8nG-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 3d546191ad9d7d2ad2c7928204b9de51deafa675)
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/1e40283730dea11a1556d589925313cdca295484
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Jianglei-Nie/cw1200-Fix-memory-leak-in-cw1200_set_key/20220526-114747
git checkout 1e40283730dea11a1556d589925313cdca295484
# 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=x86_64 SHELL=/bin/bash drivers/net/wireless/st/cw1200/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/net/wireless/st/cw1200/sta.c:826:26: error: use of undeclared identifier 'idx'
cw1200_free_key(priv, idx);
^
1 error generated.
vim +/idx +826 drivers/net/wireless/st/cw1200/sta.c
679
680 int cw1200_set_key(struct ieee80211_hw *dev, enum set_key_cmd cmd,
681 struct ieee80211_vif *vif, struct ieee80211_sta *sta,
682 struct ieee80211_key_conf *key)
683 {
684 int ret = -EOPNOTSUPP;
685 struct cw1200_common *priv = dev->priv;
686 struct ieee80211_key_seq seq;
687
688 mutex_lock(&priv->conf_mutex);
689
690 if (cmd == SET_KEY) {
691 u8 *peer_addr = NULL;
692 int pairwise = (key->flags & IEEE80211_KEY_FLAG_PAIRWISE) ?
693 1 : 0;
694 int idx = cw1200_alloc_key(priv);
695 struct wsm_add_key *wsm_key = &priv->keys[idx];
696
697 if (idx < 0) {
698 ret = -EINVAL;
699 goto finally;
700 }
701
702 if (sta)
703 peer_addr = sta->addr;
704
705 key->flags |= IEEE80211_KEY_FLAG_PUT_IV_SPACE |
706 IEEE80211_KEY_FLAG_RESERVE_TAILROOM;
707
708 switch (key->cipher) {
709 case WLAN_CIPHER_SUITE_WEP40:
710 case WLAN_CIPHER_SUITE_WEP104:
711 if (key->keylen > 16) {
712 cw1200_free_key(priv, idx);
713 ret = -EINVAL;
714 goto finally;
715 }
716
717 if (pairwise) {
718 wsm_key->type = WSM_KEY_TYPE_WEP_PAIRWISE;
719 memcpy(wsm_key->wep_pairwise.peer,
720 peer_addr, ETH_ALEN);
721 memcpy(wsm_key->wep_pairwise.keydata,
722 &key->key[0], key->keylen);
723 wsm_key->wep_pairwise.keylen = key->keylen;
724 } else {
725 wsm_key->type = WSM_KEY_TYPE_WEP_DEFAULT;
726 memcpy(wsm_key->wep_group.keydata,
727 &key->key[0], key->keylen);
728 wsm_key->wep_group.keylen = key->keylen;
729 wsm_key->wep_group.keyid = key->keyidx;
730 }
731 break;
732 case WLAN_CIPHER_SUITE_TKIP:
733 ieee80211_get_key_rx_seq(key, 0, &seq);
734 if (pairwise) {
735 wsm_key->type = WSM_KEY_TYPE_TKIP_PAIRWISE;
736 memcpy(wsm_key->tkip_pairwise.peer,
737 peer_addr, ETH_ALEN);
738 memcpy(wsm_key->tkip_pairwise.keydata,
739 &key->key[0], 16);
740 memcpy(wsm_key->tkip_pairwise.tx_mic_key,
741 &key->key[16], 8);
742 memcpy(wsm_key->tkip_pairwise.rx_mic_key,
743 &key->key[24], 8);
744 } else {
745 size_t mic_offset =
746 (priv->mode == NL80211_IFTYPE_AP) ?
747 16 : 24;
748 wsm_key->type = WSM_KEY_TYPE_TKIP_GROUP;
749 memcpy(wsm_key->tkip_group.keydata,
750 &key->key[0], 16);
751 memcpy(wsm_key->tkip_group.rx_mic_key,
752 &key->key[mic_offset], 8);
753
754 wsm_key->tkip_group.rx_seqnum[0] = seq.tkip.iv16 & 0xff;
755 wsm_key->tkip_group.rx_seqnum[1] = (seq.tkip.iv16 >> 8) & 0xff;
756 wsm_key->tkip_group.rx_seqnum[2] = seq.tkip.iv32 & 0xff;
757 wsm_key->tkip_group.rx_seqnum[3] = (seq.tkip.iv32 >> 8) & 0xff;
758 wsm_key->tkip_group.rx_seqnum[4] = (seq.tkip.iv32 >> 16) & 0xff;
759 wsm_key->tkip_group.rx_seqnum[5] = (seq.tkip.iv32 >> 24) & 0xff;
760 wsm_key->tkip_group.rx_seqnum[6] = 0;
761 wsm_key->tkip_group.rx_seqnum[7] = 0;
762
763 wsm_key->tkip_group.keyid = key->keyidx;
764 }
765 break;
766 case WLAN_CIPHER_SUITE_CCMP:
767 ieee80211_get_key_rx_seq(key, 0, &seq);
768 if (pairwise) {
769 wsm_key->type = WSM_KEY_TYPE_AES_PAIRWISE;
770 memcpy(wsm_key->aes_pairwise.peer,
771 peer_addr, ETH_ALEN);
772 memcpy(wsm_key->aes_pairwise.keydata,
773 &key->key[0], 16);
774 } else {
775 wsm_key->type = WSM_KEY_TYPE_AES_GROUP;
776 memcpy(wsm_key->aes_group.keydata,
777 &key->key[0], 16);
778
779 wsm_key->aes_group.rx_seqnum[0] = seq.ccmp.pn[5];
780 wsm_key->aes_group.rx_seqnum[1] = seq.ccmp.pn[4];
781 wsm_key->aes_group.rx_seqnum[2] = seq.ccmp.pn[3];
782 wsm_key->aes_group.rx_seqnum[3] = seq.ccmp.pn[2];
783 wsm_key->aes_group.rx_seqnum[4] = seq.ccmp.pn[1];
784 wsm_key->aes_group.rx_seqnum[5] = seq.ccmp.pn[0];
785 wsm_key->aes_group.rx_seqnum[6] = 0;
786 wsm_key->aes_group.rx_seqnum[7] = 0;
787 wsm_key->aes_group.keyid = key->keyidx;
788 }
789 break;
790 case WLAN_CIPHER_SUITE_SMS4:
791 if (pairwise) {
792 wsm_key->type = WSM_KEY_TYPE_WAPI_PAIRWISE;
793 memcpy(wsm_key->wapi_pairwise.peer,
794 peer_addr, ETH_ALEN);
795 memcpy(wsm_key->wapi_pairwise.keydata,
796 &key->key[0], 16);
797 memcpy(wsm_key->wapi_pairwise.mic_key,
798 &key->key[16], 16);
799 wsm_key->wapi_pairwise.keyid = key->keyidx;
800 } else {
801 wsm_key->type = WSM_KEY_TYPE_WAPI_GROUP;
802 memcpy(wsm_key->wapi_group.keydata,
803 &key->key[0], 16);
804 memcpy(wsm_key->wapi_group.mic_key,
805 &key->key[16], 16);
806 wsm_key->wapi_group.keyid = key->keyidx;
807 }
808 break;
809 default:
810 pr_warn("Unhandled key type %d\n", key->cipher);
811 cw1200_free_key(priv, idx);
812 ret = -EOPNOTSUPP;
813 goto finally;
814 }
815 ret = wsm_add_key(priv, wsm_key);
816 if (!ret)
817 key->hw_key_idx = idx;
818 else
819 cw1200_free_key(priv, idx);
820 } else if (cmd == DISABLE_KEY) {
821 struct wsm_remove_key wsm_key = {
822 .index = key->hw_key_idx,
823 };
824
825 if (wsm_key.index > WSM_KEY_MAX_INDEX) {
> 826 cw1200_free_key(priv, idx);
827 ret = -EINVAL;
828 goto finally;
829 }
830
831 cw1200_free_key(priv, wsm_key.index);
832 ret = wsm_remove_key(priv, &wsm_key);
833 } else {
834 pr_warn("Unhandled key command %d\n", cmd);
835 }
836
837 finally:
838 mutex_unlock(&priv->conf_mutex);
839 return ret;
840 }
841
--
0-DAY CI Kernel Test Service
https://01.org/lkp
next prev parent reply other threads:[~2022-05-26 9:08 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-26 3:30 [PATCH] cw1200: Fix memory leak in cw1200_set_key() Jianglei Nie
2022-05-26 9:02 ` kernel test robot [this message]
2022-05-27 6:27 ` Kalle Valo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202205261656.CWDWN8nG-lkp@intel.com \
--to=lkp@intel.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kbuild-all@lists.01.org \
--cc=kuba@kernel.org \
--cc=kvalo@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=netdev@vger.kernel.org \
--cc=niejianglei2021@163.com \
--cc=pabeni@redhat.com \
--cc=pizza@shaftnet.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).