* [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211
2024-05-11 16:32 [PATCH 0/3] lib80211: Constify struct lib80211_crypto_ops Christophe JAILLET
@ 2024-05-11 16:32 ` Christophe JAILLET
2024-05-11 20:31 ` Simon Horman
` (2 more replies)
2024-05-11 16:32 ` [PATCH 2/3] lib80211: Constify struct lib80211_crypto_ops Christophe JAILLET
2024-05-11 16:32 ` [PATCH 3/3] staging: rtl8192e: " Christophe JAILLET
2 siblings, 3 replies; 9+ messages in thread
From: Christophe JAILLET @ 2024-05-11 16:32 UTC (permalink / raw)
To: gregkh, davem, edumazet, kuba, pabeni, johannes,
philipp.g.hortmann, tdavies, garyrookard, straube.linux
Cc: linux-staging, netdev, linux-wireless, linux-kernel,
kernel-janitors, Christophe JAILLET
lib80211_register_crypto_ops() and lib80211_unregister_crypto_ops() don't
modify their "struct lib80211_crypto_ops *ops" argument. So, it can be
declared as const.
Doing so, some adjustments are needed to also constify some date in
"struct lib80211_crypt_data", "struct lib80211_crypto_alg" and the
return value of lib80211_get_crypto_ops().
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
Compile tested only.
---
drivers/staging/rtl8192e/rtllib_wx.c | 2 +-
include/net/lib80211.h | 8 ++++----
net/wireless/lib80211.c | 8 ++++----
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/staging/rtl8192e/rtllib_wx.c b/drivers/staging/rtl8192e/rtllib_wx.c
index fbd4ec824084..c730d921463d 100644
--- a/drivers/staging/rtl8192e/rtllib_wx.c
+++ b/drivers/staging/rtl8192e/rtllib_wx.c
@@ -474,7 +474,7 @@ int rtllib_wx_set_encode_ext(struct rtllib_device *ieee,
int i, idx;
int group_key = 0;
const char *alg, *module;
- struct lib80211_crypto_ops *ops;
+ const struct lib80211_crypto_ops *ops;
struct lib80211_crypt_data **crypt;
struct rtllib_security sec = {
diff --git a/include/net/lib80211.h b/include/net/lib80211.h
index 8b47d3a51cf8..fd0f15d87d80 100644
--- a/include/net/lib80211.h
+++ b/include/net/lib80211.h
@@ -92,7 +92,7 @@ struct lib80211_crypto_ops {
struct lib80211_crypt_data {
struct list_head list; /* delayed deletion list */
- struct lib80211_crypto_ops *ops;
+ const struct lib80211_crypto_ops *ops;
void *priv;
atomic_t refcnt;
};
@@ -113,9 +113,9 @@ struct lib80211_crypt_info {
int lib80211_crypt_info_init(struct lib80211_crypt_info *info, char *name,
spinlock_t *lock);
void lib80211_crypt_info_free(struct lib80211_crypt_info *info);
-int lib80211_register_crypto_ops(struct lib80211_crypto_ops *ops);
-int lib80211_unregister_crypto_ops(struct lib80211_crypto_ops *ops);
-struct lib80211_crypto_ops *lib80211_get_crypto_ops(const char *name);
+int lib80211_register_crypto_ops(const struct lib80211_crypto_ops *ops);
+int lib80211_unregister_crypto_ops(const struct lib80211_crypto_ops *ops);
+const struct lib80211_crypto_ops *lib80211_get_crypto_ops(const char *name);
void lib80211_crypt_delayed_deinit(struct lib80211_crypt_info *info,
struct lib80211_crypt_data **crypt);
diff --git a/net/wireless/lib80211.c b/net/wireless/lib80211.c
index d66a913027e0..51e31316bcb8 100644
--- a/net/wireless/lib80211.c
+++ b/net/wireless/lib80211.c
@@ -34,7 +34,7 @@ MODULE_LICENSE("GPL");
struct lib80211_crypto_alg {
struct list_head list;
- struct lib80211_crypto_ops *ops;
+ const struct lib80211_crypto_ops *ops;
};
static LIST_HEAD(lib80211_crypto_algs);
@@ -161,7 +161,7 @@ void lib80211_crypt_delayed_deinit(struct lib80211_crypt_info *info,
}
EXPORT_SYMBOL(lib80211_crypt_delayed_deinit);
-int lib80211_register_crypto_ops(struct lib80211_crypto_ops *ops)
+int lib80211_register_crypto_ops(const struct lib80211_crypto_ops *ops)
{
unsigned long flags;
struct lib80211_crypto_alg *alg;
@@ -183,7 +183,7 @@ int lib80211_register_crypto_ops(struct lib80211_crypto_ops *ops)
}
EXPORT_SYMBOL(lib80211_register_crypto_ops);
-int lib80211_unregister_crypto_ops(struct lib80211_crypto_ops *ops)
+int lib80211_unregister_crypto_ops(const struct lib80211_crypto_ops *ops)
{
struct lib80211_crypto_alg *alg;
unsigned long flags;
@@ -206,7 +206,7 @@ int lib80211_unregister_crypto_ops(struct lib80211_crypto_ops *ops)
}
EXPORT_SYMBOL(lib80211_unregister_crypto_ops);
-struct lib80211_crypto_ops *lib80211_get_crypto_ops(const char *name)
+const struct lib80211_crypto_ops *lib80211_get_crypto_ops(const char *name)
{
struct lib80211_crypto_alg *alg;
unsigned long flags;
--
2.45.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211
2024-05-11 16:32 ` [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211 Christophe JAILLET
@ 2024-05-11 20:31 ` Simon Horman
2024-05-11 21:47 ` Christophe JAILLET
2024-05-12 9:25 ` kernel test robot
2024-05-13 2:14 ` kernel test robot
2 siblings, 1 reply; 9+ messages in thread
From: Simon Horman @ 2024-05-11 20:31 UTC (permalink / raw)
To: Christophe JAILLET
Cc: gregkh, davem, edumazet, kuba, pabeni, johannes,
philipp.g.hortmann, tdavies, garyrookard, straube.linux,
linux-staging, netdev, linux-wireless, linux-kernel,
kernel-janitors
On Sat, May 11, 2024 at 06:32:38PM +0200, Christophe JAILLET wrote:
> lib80211_register_crypto_ops() and lib80211_unregister_crypto_ops() don't
> modify their "struct lib80211_crypto_ops *ops" argument. So, it can be
> declared as const.
>
> Doing so, some adjustments are needed to also constify some date in
> "struct lib80211_crypt_data", "struct lib80211_crypto_alg" and the
> return value of lib80211_get_crypto_ops().
>
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
> Compile tested only.
Hi Christophe,
Unfortunately allmodconfig W=1 build on x86_64 with Clang says:
.../libipw_wx.c:587:6: error: assigning to 'struct lib80211_crypto_ops *' from 'const struct lib80211_crypto_ops *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
587 | ops = lib80211_get_crypto_ops(alg);
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.../libipw_wx.c:590:7: error: assigning to 'struct lib80211_crypto_ops *' from 'const struct lib80211_crypto_ops *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
590 | ops = lib80211_get_crypto_ops(alg);
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
pw-bot: changes-requested
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211
2024-05-11 20:31 ` Simon Horman
@ 2024-05-11 21:47 ` Christophe JAILLET
2024-05-12 7:25 ` Marion & Christophe JAILLET
0 siblings, 1 reply; 9+ messages in thread
From: Christophe JAILLET @ 2024-05-11 21:47 UTC (permalink / raw)
To: Simon Horman
Cc: gregkh, davem, edumazet, kuba, pabeni, johannes,
philipp.g.hortmann, tdavies, garyrookard, straube.linux,
linux-staging, netdev, linux-wireless, linux-kernel,
kernel-janitors
Le 11/05/2024 à 22:31, Simon Horman a écrit :
> On Sat, May 11, 2024 at 06:32:38PM +0200, Christophe JAILLET wrote:
>> lib80211_register_crypto_ops() and lib80211_unregister_crypto_ops() don't
>> modify their "struct lib80211_crypto_ops *ops" argument. So, it can be
>> declared as const.
>>
>> Doing so, some adjustments are needed to also constify some date in
>> "struct lib80211_crypt_data", "struct lib80211_crypto_alg" and the
>> return value of lib80211_get_crypto_ops().
>>
>> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
>> ---
>> Compile tested only.
>
> Hi Christophe,
>
> Unfortunately allmodconfig W=1 build on x86_64 with Clang says:
>
> .../libipw_wx.c:587:6: error: assigning to 'struct lib80211_crypto_ops *' from 'const struct lib80211_crypto_ops *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
> 587 | ops = lib80211_get_crypto_ops(alg);
> | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> .../libipw_wx.c:590:7: error: assigning to 'struct lib80211_crypto_ops *' from 'const struct lib80211_crypto_ops *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
> 590 | ops = lib80211_get_crypto_ops(alg);
> | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
Hi,
I'll dig more tomorrow, but I don't see this error (with gcc), even with
W=1.
The following part of the patch is here to avoid the exact compilation
error that you see.
Strange.
CJ
diff --git a/drivers/staging/rtl8192e/rtllib_wx.c
b/drivers/staging/rtl8192e/rtllib_wx.c
index fbd4ec824084..c730d921463d 100644
--- a/drivers/staging/rtl8192e/rtllib_wx.c
+++ b/drivers/staging/rtl8192e/rtllib_wx.c
@@ -474,7 +474,7 @@ int rtllib_wx_set_encode_ext(struct rtllib_device *ieee,
int i, idx;
int group_key = 0;
const char *alg, *module;
- struct lib80211_crypto_ops *ops;
+ const struct lib80211_crypto_ops *ops;
struct lib80211_crypt_data **crypt;
struct rtllib_security sec = {
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211
2024-05-11 21:47 ` Christophe JAILLET
@ 2024-05-12 7:25 ` Marion & Christophe JAILLET
0 siblings, 0 replies; 9+ messages in thread
From: Marion & Christophe JAILLET @ 2024-05-12 7:25 UTC (permalink / raw)
To: Simon Horman
Cc: gregkh, davem, edumazet, kuba, pabeni, johannes,
philipp.g.hortmann, tdavies, garyrookard, straube.linux,
linux-staging, netdev, linux-wireless, linux-kernel,
kernel-janitors
Le 11/05/2024 à 23:47, Christophe JAILLET a écrit :
> Le 11/05/2024 à 22:31, Simon Horman a écrit :
>> On Sat, May 11, 2024 at 06:32:38PM +0200, Christophe JAILLET wrote:
>>> lib80211_register_crypto_ops() and lib80211_unregister_crypto_ops()
>>> don't
>>> modify their "struct lib80211_crypto_ops *ops" argument. So, it can be
>>> declared as const.
>>>
>>> Doing so, some adjustments are needed to also constify some date in
>>> "struct lib80211_crypt_data", "struct lib80211_crypto_alg" and the
>>> return value of lib80211_get_crypto_ops().
>>>
>>> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
>>> ---
>>> Compile tested only.
>>
>> Hi Christophe,
>>
>> Unfortunately allmodconfig W=1 build on x86_64 with Clang says:
>>
>> .../libipw_wx.c:587:6: error: assigning to 'struct lib80211_crypto_ops
>> *' from 'const struct lib80211_crypto_ops *' discards qualifiers
>> [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
>> 587 | ops = lib80211_get_crypto_ops(alg);
>> | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> .../libipw_wx.c:590:7: error: assigning to 'struct lib80211_crypto_ops
>> *' from 'const struct lib80211_crypto_ops *' discards qualifiers
>> [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
>> 590 | ops = lib80211_get_crypto_ops(alg);
>> | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>
> Hi,
>
> I'll dig more tomorrow, but I don't see this error (with gcc), even with
> W=1.
>
> The following part of the patch is here to avoid the exact compilation
> error that you see.
>
> Strange.
>
> CJ
>
Ok, got it.
Thanks for the pointer.
I don't know how I missed this one. :(
I'll send a v2.
CJ
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211
2024-05-11 16:32 ` [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211 Christophe JAILLET
2024-05-11 20:31 ` Simon Horman
@ 2024-05-12 9:25 ` kernel test robot
2024-05-13 2:14 ` kernel test robot
2 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-05-12 9:25 UTC (permalink / raw)
To: Christophe JAILLET, gregkh, davem, edumazet, kuba, pabeni,
johannes, philipp.g.hortmann, tdavies, garyrookard, straube.linux
Cc: oe-kbuild-all, linux-staging, netdev, linux-wireless,
linux-kernel, kernel-janitors, Christophe JAILLET
Hi Christophe,
kernel test robot noticed the following build warnings:
[auto build test WARNING on staging/staging-testing]
[also build test WARNING on staging/staging-next staging/staging-linus wireless-next/main wireless/main linus/master v6.9-rc7 next-20240510]
[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/Christophe-JAILLET/lib80211-Handle-const-struct-lib80211_crypto_ops-in-lib80211/20240512-003642
base: staging/staging-testing
patch link: https://lore.kernel.org/r/d6306f7c76015653e9539ddbcd1ed74d1681a98f.1715443223.git.christophe.jaillet%40wanadoo.fr
patch subject: [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20240512/202405121630.0zJQqloS-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240512/202405121630.0zJQqloS-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405121630.0zJQqloS-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/net/wireless/intel/ipw2x00/libipw_wx.c: In function 'libipw_wx_set_encodeext':
>> drivers/net/wireless/intel/ipw2x00/libipw_wx.c:587:13: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
587 | ops = lib80211_get_crypto_ops(alg);
| ^
drivers/net/wireless/intel/ipw2x00/libipw_wx.c:590:21: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
590 | ops = lib80211_get_crypto_ops(alg);
| ^
vim +/const +587 drivers/net/wireless/intel/ipw2x00/libipw_wx.c
b453872c35cfcb net/ieee80211/ieee80211_wx.c Jeff Garzik 2005-05-12 501
b0a4e7d8a291de drivers/net/wireless/ipw2x00/libipw_wx.c John W. Linville 2009-08-20 502 int libipw_wx_set_encodeext(struct libipw_device *ieee,
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 503 struct iw_request_info *info,
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 504 union iwreq_data *wrqu, char *extra)
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 505 {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 506 struct net_device *dev = ieee->dev;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 507 struct iw_point *encoding = &wrqu->encoding;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 508 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 509 int i, idx, ret = 0;
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 510 int group_key = 0;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 511 const char *alg, *module;
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 512 struct lib80211_crypto_ops *ops;
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 513 struct lib80211_crypt_data **crypt;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 514
b0a4e7d8a291de drivers/net/wireless/ipw2x00/libipw_wx.c John W. Linville 2009-08-20 515 struct libipw_security sec = {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 516 .flags = 0,
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 517 };
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 518
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 519 idx = encoding->flags & IW_ENCODE_INDEX;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 520 if (idx) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 521 if (idx < 1 || idx > WEP_KEYS)
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 522 return -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 523 idx--;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 524 } else
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 525 idx = ieee->crypt_info.tx_keyidx;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 526
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 527 if (ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) {
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 528 crypt = &ieee->crypt_info.crypt[idx];
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 529 group_key = 1;
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 530 } else {
e189277a3f1cbb net/ieee80211/ieee80211_wx.c Volker Braun 2005-10-24 531 /* some Cisco APs use idx>0 for unicast in dynamic WEP */
e189277a3f1cbb net/ieee80211/ieee80211_wx.c Volker Braun 2005-10-24 532 if (idx != 0 && ext->alg != IW_ENCODE_ALG_WEP)
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 533 return -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 534 if (ieee->iw_mode == IW_MODE_INFRA)
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 535 crypt = &ieee->crypt_info.crypt[idx];
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 536 else
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 537 return -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 538 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 539
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 540 sec.flags |= SEC_ENABLED | SEC_ENCRYPT;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 541 if ((encoding->flags & IW_ENCODE_DISABLED) ||
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 542 ext->alg == IW_ENCODE_ALG_NONE) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 543 if (*crypt)
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 544 lib80211_crypt_delayed_deinit(&ieee->crypt_info, crypt);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 545
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 546 for (i = 0; i < WEP_KEYS; i++)
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 547 if (ieee->crypt_info.crypt[i] != NULL)
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 548 break;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 549
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 550 if (i == WEP_KEYS) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 551 sec.enabled = 0;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 552 sec.encrypt = 0;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 553 sec.level = SEC_LEVEL_0;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 554 sec.flags |= SEC_LEVEL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 555 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 556 goto done;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 557 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 558
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 559 sec.enabled = 1;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 560 sec.encrypt = 1;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 561
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 562 if (group_key ? !ieee->host_mc_decrypt :
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 563 !(ieee->host_encrypt || ieee->host_decrypt ||
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 564 ieee->host_encrypt_msdu))
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 565 goto skip_host_crypt;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 566
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 567 switch (ext->alg) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 568 case IW_ENCODE_ALG_WEP:
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 569 alg = "WEP";
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 570 module = "lib80211_crypt_wep";
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 571 break;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 572 case IW_ENCODE_ALG_TKIP:
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 573 alg = "TKIP";
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 574 module = "lib80211_crypt_tkip";
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 575 break;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 576 case IW_ENCODE_ALG_CCMP:
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 577 alg = "CCMP";
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 578 module = "lib80211_crypt_ccmp";
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 579 break;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 580 default:
b0a4e7d8a291de drivers/net/wireless/ipw2x00/libipw_wx.c John W. Linville 2009-08-20 581 LIBIPW_DEBUG_WX("%s: unknown crypto alg %d\n",
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 582 dev->name, ext->alg);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 583 ret = -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 584 goto done;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 585 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 586
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 @587 ops = lib80211_get_crypto_ops(alg);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 588 if (ops == NULL) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 589 request_module(module);
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 590 ops = lib80211_get_crypto_ops(alg);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 591 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 592 if (ops == NULL) {
b0a4e7d8a291de drivers/net/wireless/ipw2x00/libipw_wx.c John W. Linville 2009-08-20 593 LIBIPW_DEBUG_WX("%s: unknown crypto alg %d\n",
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 594 dev->name, ext->alg);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 595 ret = -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 596 goto done;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 597 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 598
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 599 if (*crypt == NULL || (*crypt)->ops != ops) {
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 600 struct lib80211_crypt_data *new_crypt;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 601
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 602 lib80211_crypt_delayed_deinit(&ieee->crypt_info, crypt);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 603
0da974f4f303a6 net/ieee80211/ieee80211_wx.c Panagiotis Issaris 2006-07-21 604 new_crypt = kzalloc(sizeof(*new_crypt), GFP_KERNEL);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 605 if (new_crypt == NULL) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 606 ret = -ENOMEM;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 607 goto done;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 608 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 609 new_crypt->ops = ops;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 610 if (new_crypt->ops && try_module_get(new_crypt->ops->owner))
6eb6edf04acd09 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-22 611 new_crypt->priv = new_crypt->ops->init(idx);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 612 if (new_crypt->priv == NULL) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 613 kfree(new_crypt);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 614 ret = -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 615 goto done;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 616 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 617 *crypt = new_crypt;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 618 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 619
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 620 if (ext->key_len > 0 && (*crypt)->ops->set_key &&
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 621 (*crypt)->ops->set_key(ext->key, ext->key_len, ext->rx_seq,
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 622 (*crypt)->priv) < 0) {
b0a4e7d8a291de drivers/net/wireless/ipw2x00/libipw_wx.c John W. Linville 2009-08-20 623 LIBIPW_DEBUG_WX("%s: key setting failed\n", dev->name);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 624 ret = -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 625 goto done;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 626 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 627
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 628 skip_host_crypt:
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 629 if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) {
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 630 ieee->crypt_info.tx_keyidx = idx;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 631 sec.active_key = idx;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 632 sec.flags |= SEC_ACTIVE_KEY;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 633 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 634
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 635 if (ext->alg != IW_ENCODE_ALG_NONE) {
260a9ad9446723 drivers/net/wireless/intel/ipw2x00/libipw_wx.c Dan Carpenter 2021-04-14 636 int key_len = clamp_val(ext->key_len, 0, SCM_KEY_LEN);
260a9ad9446723 drivers/net/wireless/intel/ipw2x00/libipw_wx.c Dan Carpenter 2021-04-14 637
260a9ad9446723 drivers/net/wireless/intel/ipw2x00/libipw_wx.c Dan Carpenter 2021-04-14 638 memcpy(sec.keys[idx], ext->key, key_len);
260a9ad9446723 drivers/net/wireless/intel/ipw2x00/libipw_wx.c Dan Carpenter 2021-04-14 639 sec.key_sizes[idx] = key_len;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 640 sec.flags |= (1 << idx);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 641 if (ext->alg == IW_ENCODE_ALG_WEP) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 642 sec.encode_alg[idx] = SEC_ALG_WEP;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 643 sec.flags |= SEC_LEVEL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 644 sec.level = SEC_LEVEL_1;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 645 } else if (ext->alg == IW_ENCODE_ALG_TKIP) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 646 sec.encode_alg[idx] = SEC_ALG_TKIP;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 647 sec.flags |= SEC_LEVEL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 648 sec.level = SEC_LEVEL_2;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 649 } else if (ext->alg == IW_ENCODE_ALG_CCMP) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 650 sec.encode_alg[idx] = SEC_ALG_CCMP;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 651 sec.flags |= SEC_LEVEL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 652 sec.level = SEC_LEVEL_3;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 653 }
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 654 /* Don't set sec level for group keys. */
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 655 if (group_key)
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 656 sec.flags &= ~SEC_LEVEL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 657 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 658 done:
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 659 if (ieee->set_security)
3fc7bc8ea792b4 drivers/net/wireless/ipw2x00/libipw_wx.c Paul Bolle 2012-09-21 660 ieee->set_security(dev, &sec);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 661
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 662 return ret;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 663 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 664
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211
2024-05-11 16:32 ` [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211 Christophe JAILLET
2024-05-11 20:31 ` Simon Horman
2024-05-12 9:25 ` kernel test robot
@ 2024-05-13 2:14 ` kernel test robot
2 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-05-13 2:14 UTC (permalink / raw)
To: Christophe JAILLET, gregkh, davem, edumazet, kuba, pabeni,
johannes, philipp.g.hortmann, tdavies, garyrookard, straube.linux
Cc: oe-kbuild-all, linux-staging, netdev, linux-wireless,
linux-kernel, kernel-janitors, Christophe JAILLET
Hi Christophe,
kernel test robot noticed the following build warnings:
[auto build test WARNING on staging/staging-testing]
[also build test WARNING on staging/staging-next staging/staging-linus wireless-next/main wireless/main linus/master v6.9 next-20240510]
[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/Christophe-JAILLET/lib80211-Handle-const-struct-lib80211_crypto_ops-in-lib80211/20240512-003642
base: staging/staging-testing
patch link: https://lore.kernel.org/r/d6306f7c76015653e9539ddbcd1ed74d1681a98f.1715443223.git.christophe.jaillet%40wanadoo.fr
patch subject: [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211
config: csky-randconfig-r132-20240513 (https://download.01.org/0day-ci/archive/20240513/202405130949.5EW85uAq-lkp@intel.com/config)
compiler: csky-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20240513/202405130949.5EW85uAq-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405130949.5EW85uAq-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/net/wireless/intel/ipw2x00/libipw_wx.c:587:13: sparse: sparse: incorrect type in assignment (different modifiers) @@ expected struct lib80211_crypto_ops *ops @@ got struct lib80211_crypto_ops const * @@
drivers/net/wireless/intel/ipw2x00/libipw_wx.c:587:13: sparse: expected struct lib80211_crypto_ops *ops
drivers/net/wireless/intel/ipw2x00/libipw_wx.c:587:13: sparse: got struct lib80211_crypto_ops const *
drivers/net/wireless/intel/ipw2x00/libipw_wx.c:590:21: sparse: sparse: incorrect type in assignment (different modifiers) @@ expected struct lib80211_crypto_ops *ops @@ got struct lib80211_crypto_ops const * @@
drivers/net/wireless/intel/ipw2x00/libipw_wx.c:590:21: sparse: expected struct lib80211_crypto_ops *ops
drivers/net/wireless/intel/ipw2x00/libipw_wx.c:590:21: sparse: got struct lib80211_crypto_ops const *
vim +587 drivers/net/wireless/intel/ipw2x00/libipw_wx.c
b453872c35cfcb net/ieee80211/ieee80211_wx.c Jeff Garzik 2005-05-12 501
b0a4e7d8a291de drivers/net/wireless/ipw2x00/libipw_wx.c John W. Linville 2009-08-20 502 int libipw_wx_set_encodeext(struct libipw_device *ieee,
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 503 struct iw_request_info *info,
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 504 union iwreq_data *wrqu, char *extra)
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 505 {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 506 struct net_device *dev = ieee->dev;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 507 struct iw_point *encoding = &wrqu->encoding;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 508 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 509 int i, idx, ret = 0;
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 510 int group_key = 0;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 511 const char *alg, *module;
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 512 struct lib80211_crypto_ops *ops;
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 513 struct lib80211_crypt_data **crypt;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 514
b0a4e7d8a291de drivers/net/wireless/ipw2x00/libipw_wx.c John W. Linville 2009-08-20 515 struct libipw_security sec = {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 516 .flags = 0,
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 517 };
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 518
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 519 idx = encoding->flags & IW_ENCODE_INDEX;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 520 if (idx) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 521 if (idx < 1 || idx > WEP_KEYS)
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 522 return -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 523 idx--;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 524 } else
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 525 idx = ieee->crypt_info.tx_keyidx;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 526
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 527 if (ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) {
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 528 crypt = &ieee->crypt_info.crypt[idx];
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 529 group_key = 1;
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 530 } else {
e189277a3f1cbb net/ieee80211/ieee80211_wx.c Volker Braun 2005-10-24 531 /* some Cisco APs use idx>0 for unicast in dynamic WEP */
e189277a3f1cbb net/ieee80211/ieee80211_wx.c Volker Braun 2005-10-24 532 if (idx != 0 && ext->alg != IW_ENCODE_ALG_WEP)
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 533 return -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 534 if (ieee->iw_mode == IW_MODE_INFRA)
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 535 crypt = &ieee->crypt_info.crypt[idx];
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 536 else
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 537 return -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 538 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 539
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 540 sec.flags |= SEC_ENABLED | SEC_ENCRYPT;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 541 if ((encoding->flags & IW_ENCODE_DISABLED) ||
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 542 ext->alg == IW_ENCODE_ALG_NONE) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 543 if (*crypt)
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 544 lib80211_crypt_delayed_deinit(&ieee->crypt_info, crypt);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 545
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 546 for (i = 0; i < WEP_KEYS; i++)
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 547 if (ieee->crypt_info.crypt[i] != NULL)
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 548 break;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 549
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 550 if (i == WEP_KEYS) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 551 sec.enabled = 0;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 552 sec.encrypt = 0;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 553 sec.level = SEC_LEVEL_0;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 554 sec.flags |= SEC_LEVEL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 555 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 556 goto done;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 557 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 558
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 559 sec.enabled = 1;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 560 sec.encrypt = 1;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 561
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 562 if (group_key ? !ieee->host_mc_decrypt :
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 563 !(ieee->host_encrypt || ieee->host_decrypt ||
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 564 ieee->host_encrypt_msdu))
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 565 goto skip_host_crypt;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 566
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 567 switch (ext->alg) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 568 case IW_ENCODE_ALG_WEP:
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 569 alg = "WEP";
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 570 module = "lib80211_crypt_wep";
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 571 break;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 572 case IW_ENCODE_ALG_TKIP:
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 573 alg = "TKIP";
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 574 module = "lib80211_crypt_tkip";
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 575 break;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 576 case IW_ENCODE_ALG_CCMP:
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 577 alg = "CCMP";
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 578 module = "lib80211_crypt_ccmp";
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 579 break;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 580 default:
b0a4e7d8a291de drivers/net/wireless/ipw2x00/libipw_wx.c John W. Linville 2009-08-20 581 LIBIPW_DEBUG_WX("%s: unknown crypto alg %d\n",
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 582 dev->name, ext->alg);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 583 ret = -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 584 goto done;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 585 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 586
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 @587 ops = lib80211_get_crypto_ops(alg);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 588 if (ops == NULL) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 589 request_module(module);
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 590 ops = lib80211_get_crypto_ops(alg);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 591 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 592 if (ops == NULL) {
b0a4e7d8a291de drivers/net/wireless/ipw2x00/libipw_wx.c John W. Linville 2009-08-20 593 LIBIPW_DEBUG_WX("%s: unknown crypto alg %d\n",
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 594 dev->name, ext->alg);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 595 ret = -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 596 goto done;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 597 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 598
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 599 if (*crypt == NULL || (*crypt)->ops != ops) {
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 600 struct lib80211_crypt_data *new_crypt;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 601
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 602 lib80211_crypt_delayed_deinit(&ieee->crypt_info, crypt);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 603
0da974f4f303a6 net/ieee80211/ieee80211_wx.c Panagiotis Issaris 2006-07-21 604 new_crypt = kzalloc(sizeof(*new_crypt), GFP_KERNEL);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 605 if (new_crypt == NULL) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 606 ret = -ENOMEM;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 607 goto done;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 608 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 609 new_crypt->ops = ops;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 610 if (new_crypt->ops && try_module_get(new_crypt->ops->owner))
6eb6edf04acd09 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-22 611 new_crypt->priv = new_crypt->ops->init(idx);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 612 if (new_crypt->priv == NULL) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 613 kfree(new_crypt);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 614 ret = -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 615 goto done;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 616 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 617 *crypt = new_crypt;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 618 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 619
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 620 if (ext->key_len > 0 && (*crypt)->ops->set_key &&
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 621 (*crypt)->ops->set_key(ext->key, ext->key_len, ext->rx_seq,
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 622 (*crypt)->priv) < 0) {
b0a4e7d8a291de drivers/net/wireless/ipw2x00/libipw_wx.c John W. Linville 2009-08-20 623 LIBIPW_DEBUG_WX("%s: key setting failed\n", dev->name);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 624 ret = -EINVAL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 625 goto done;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 626 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 627
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 628 skip_host_crypt:
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 629 if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) {
274bfb8dc5ffa1 net/ieee80211/ieee80211_wx.c John W. Linville 2008-10-29 630 ieee->crypt_info.tx_keyidx = idx;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 631 sec.active_key = idx;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 632 sec.flags |= SEC_ACTIVE_KEY;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 633 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 634
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 635 if (ext->alg != IW_ENCODE_ALG_NONE) {
260a9ad9446723 drivers/net/wireless/intel/ipw2x00/libipw_wx.c Dan Carpenter 2021-04-14 636 int key_len = clamp_val(ext->key_len, 0, SCM_KEY_LEN);
260a9ad9446723 drivers/net/wireless/intel/ipw2x00/libipw_wx.c Dan Carpenter 2021-04-14 637
260a9ad9446723 drivers/net/wireless/intel/ipw2x00/libipw_wx.c Dan Carpenter 2021-04-14 638 memcpy(sec.keys[idx], ext->key, key_len);
260a9ad9446723 drivers/net/wireless/intel/ipw2x00/libipw_wx.c Dan Carpenter 2021-04-14 639 sec.key_sizes[idx] = key_len;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 640 sec.flags |= (1 << idx);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 641 if (ext->alg == IW_ENCODE_ALG_WEP) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 642 sec.encode_alg[idx] = SEC_ALG_WEP;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 643 sec.flags |= SEC_LEVEL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 644 sec.level = SEC_LEVEL_1;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 645 } else if (ext->alg == IW_ENCODE_ALG_TKIP) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 646 sec.encode_alg[idx] = SEC_ALG_TKIP;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 647 sec.flags |= SEC_LEVEL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 648 sec.level = SEC_LEVEL_2;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 649 } else if (ext->alg == IW_ENCODE_ALG_CCMP) {
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 650 sec.encode_alg[idx] = SEC_ALG_CCMP;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 651 sec.flags |= SEC_LEVEL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 652 sec.level = SEC_LEVEL_3;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 653 }
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 654 /* Don't set sec level for group keys. */
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 655 if (group_key)
ccd0fda3a6d918 net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 656 sec.flags &= ~SEC_LEVEL;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 657 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 658 done:
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 659 if (ieee->set_security)
3fc7bc8ea792b4 drivers/net/wireless/ipw2x00/libipw_wx.c Paul Bolle 2012-09-21 660 ieee->set_security(dev, &sec);
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 661
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 662 return ret;
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 663 }
e0d369d1d969fc net/ieee80211/ieee80211_wx.c James Ketrenos 2005-09-21 664
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/3] lib80211: Constify struct lib80211_crypto_ops
2024-05-11 16:32 [PATCH 0/3] lib80211: Constify struct lib80211_crypto_ops Christophe JAILLET
2024-05-11 16:32 ` [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211 Christophe JAILLET
@ 2024-05-11 16:32 ` Christophe JAILLET
2024-05-11 16:32 ` [PATCH 3/3] staging: rtl8192e: " Christophe JAILLET
2 siblings, 0 replies; 9+ messages in thread
From: Christophe JAILLET @ 2024-05-11 16:32 UTC (permalink / raw)
To: gregkh, davem, edumazet, kuba, pabeni, johannes,
philipp.g.hortmann, tdavies, garyrookard, straube.linux
Cc: linux-staging, netdev, linux-wireless, linux-kernel,
kernel-janitors, Christophe JAILLET
Now that functions in lib80211 handle "const struct lib80211_crypto_ops",
some structure can be constify as well.
Constifying these structures moves some data to a read-only section, so
increase overall security.
Before:
text data bss dec hex filename
7273 604 16 7893 1ed5 net/wireless/lib80211.o
After:
text data bss dec hex filename
7429 444 16 7889 1ed1 net/wireless/lib80211.o
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
Compile tested only.
---
net/wireless/lib80211.c | 2 +-
net/wireless/lib80211_crypt_ccmp.c | 2 +-
net/wireless/lib80211_crypt_tkip.c | 2 +-
net/wireless/lib80211_crypt_wep.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/net/wireless/lib80211.c b/net/wireless/lib80211.c
index 51e31316bcb8..64c447040786 100644
--- a/net/wireless/lib80211.c
+++ b/net/wireless/lib80211.c
@@ -234,7 +234,7 @@ static void lib80211_crypt_null_deinit(void *priv)
{
}
-static struct lib80211_crypto_ops lib80211_crypt_null = {
+static const struct lib80211_crypto_ops lib80211_crypt_null = {
.name = "NULL",
.init = lib80211_crypt_null_init,
.deinit = lib80211_crypt_null_deinit,
diff --git a/net/wireless/lib80211_crypt_ccmp.c b/net/wireless/lib80211_crypt_ccmp.c
index cca5e1cf089e..5aad139130e1 100644
--- a/net/wireless/lib80211_crypt_ccmp.c
+++ b/net/wireless/lib80211_crypt_ccmp.c
@@ -418,7 +418,7 @@ static void lib80211_ccmp_print_stats(struct seq_file *m, void *priv)
ccmp->dot11RSNAStatsCCMPDecryptErrors);
}
-static struct lib80211_crypto_ops lib80211_crypt_ccmp = {
+static const struct lib80211_crypto_ops lib80211_crypt_ccmp = {
.name = "CCMP",
.init = lib80211_ccmp_init,
.deinit = lib80211_ccmp_deinit,
diff --git a/net/wireless/lib80211_crypt_tkip.c b/net/wireless/lib80211_crypt_tkip.c
index 5c8cdf7681e3..63e68e5e121e 100644
--- a/net/wireless/lib80211_crypt_tkip.c
+++ b/net/wireless/lib80211_crypt_tkip.c
@@ -705,7 +705,7 @@ static void lib80211_tkip_print_stats(struct seq_file *m, void *priv)
tkip->dot11RSNAStatsTKIPLocalMICFailures);
}
-static struct lib80211_crypto_ops lib80211_crypt_tkip = {
+static const struct lib80211_crypto_ops lib80211_crypt_tkip = {
.name = "TKIP",
.init = lib80211_tkip_init,
.deinit = lib80211_tkip_deinit,
diff --git a/net/wireless/lib80211_crypt_wep.c b/net/wireless/lib80211_crypt_wep.c
index 6ab9957b8f96..3b148c7bef85 100644
--- a/net/wireless/lib80211_crypt_wep.c
+++ b/net/wireless/lib80211_crypt_wep.c
@@ -226,7 +226,7 @@ static void lib80211_wep_print_stats(struct seq_file *m, void *priv)
seq_printf(m, "key[%d] alg=WEP len=%d\n", wep->key_idx, wep->key_len);
}
-static struct lib80211_crypto_ops lib80211_crypt_wep = {
+static const struct lib80211_crypto_ops lib80211_crypt_wep = {
.name = "WEP",
.init = lib80211_wep_init,
.deinit = lib80211_wep_deinit,
--
2.45.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 3/3] staging: rtl8192e: Constify struct lib80211_crypto_ops
2024-05-11 16:32 [PATCH 0/3] lib80211: Constify struct lib80211_crypto_ops Christophe JAILLET
2024-05-11 16:32 ` [PATCH 1/3] lib80211: Handle const struct lib80211_crypto_ops in lib80211 Christophe JAILLET
2024-05-11 16:32 ` [PATCH 2/3] lib80211: Constify struct lib80211_crypto_ops Christophe JAILLET
@ 2024-05-11 16:32 ` Christophe JAILLET
2 siblings, 0 replies; 9+ messages in thread
From: Christophe JAILLET @ 2024-05-11 16:32 UTC (permalink / raw)
To: gregkh, davem, edumazet, kuba, pabeni, johannes,
philipp.g.hortmann, tdavies, garyrookard, straube.linux
Cc: linux-staging, netdev, linux-wireless, linux-kernel,
kernel-janitors, Christophe JAILLET
Now that functions in lib80211 handle "const struct lib80211_crypto_ops",
some structure can be constify as well.
Constifying these structures moves some data to a read-only section, so
increase overall security.
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
Compile tested only.
---
drivers/staging/rtl8192e/rtllib_crypt_ccmp.c | 2 +-
drivers/staging/rtl8192e/rtllib_crypt_tkip.c | 2 +-
drivers/staging/rtl8192e/rtllib_crypt_wep.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/staging/rtl8192e/rtllib_crypt_ccmp.c b/drivers/staging/rtl8192e/rtllib_crypt_ccmp.c
index cbb8c8dbe9b0..ce02204ac1ba 100644
--- a/drivers/staging/rtl8192e/rtllib_crypt_ccmp.c
+++ b/drivers/staging/rtl8192e/rtllib_crypt_ccmp.c
@@ -378,7 +378,7 @@ static void rtllib_ccmp_print_stats(struct seq_file *m, void *priv)
ccmp->dot11rsna_stats_ccmp_decrypt_errors);
}
-static struct lib80211_crypto_ops rtllib_crypt_ccmp = {
+static const struct lib80211_crypto_ops rtllib_crypt_ccmp = {
.name = "R-CCMP",
.init = rtllib_ccmp_init,
.deinit = rtllib_ccmp_deinit,
diff --git a/drivers/staging/rtl8192e/rtllib_crypt_tkip.c b/drivers/staging/rtl8192e/rtllib_crypt_tkip.c
index 0244b524a7d4..be8060ecaecd 100644
--- a/drivers/staging/rtl8192e/rtllib_crypt_tkip.c
+++ b/drivers/staging/rtl8192e/rtllib_crypt_tkip.c
@@ -678,7 +678,7 @@ static void rtllib_tkip_print_stats(struct seq_file *m, void *priv)
tkip->dot11RSNAStatsTKIPLocalMICFailures);
}
-static struct lib80211_crypto_ops rtllib_crypt_tkip = {
+static const struct lib80211_crypto_ops rtllib_crypt_tkip = {
.name = "R-TKIP",
.init = rtllib_tkip_init,
.deinit = rtllib_tkip_deinit,
diff --git a/drivers/staging/rtl8192e/rtllib_crypt_wep.c b/drivers/staging/rtl8192e/rtllib_crypt_wep.c
index 21c2b7666d6f..55c5199a25ea 100644
--- a/drivers/staging/rtl8192e/rtllib_crypt_wep.c
+++ b/drivers/staging/rtl8192e/rtllib_crypt_wep.c
@@ -209,7 +209,7 @@ static void prism2_wep_print_stats(struct seq_file *m, void *priv)
seq_printf(m, "key[%d] alg=WEP len=%d\n", wep->key_idx, wep->key_len);
}
-static struct lib80211_crypto_ops rtllib_crypt_wep = {
+static const struct lib80211_crypto_ops rtllib_crypt_wep = {
.name = "R-WEP",
.init = prism2_wep_init,
.deinit = prism2_wep_deinit,
--
2.45.0
^ permalink raw reply related [flat|nested] 9+ messages in thread