hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/net/mac802154/llsec.c
....@@ -1,14 +1,6 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Copyright (C) 2014 Fraunhofer ITWM
3
- *
4
- * This program is free software; you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License version 2
6
- * as published by the Free Software Foundation.
7
- *
8
- * This program is distributed in the hope that it will be useful,
9
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- * GNU General Public License for more details.
124 *
135 * Written by:
146 * Phoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de>
....@@ -57,7 +49,7 @@
5749
5850 msl = container_of(sl, struct mac802154_llsec_seclevel, level);
5951 list_del(&sl->list);
60
- kzfree(msl);
52
+ kfree_sensitive(msl);
6153 }
6254
6355 list_for_each_entry_safe(dev, dn, &sec->table.devices, list) {
....@@ -74,7 +66,7 @@
7466 mkey = container_of(key->key, struct mac802154_llsec_key, key);
7567 list_del(&key->list);
7668 llsec_key_put(mkey);
77
- kzfree(key);
69
+ kfree_sensitive(key);
7870 }
7971 }
8072
....@@ -146,24 +138,24 @@
146138 goto err_tfm;
147139 }
148140
149
- key->tfm0 = crypto_alloc_skcipher("ctr(aes)", 0, CRYPTO_ALG_ASYNC);
141
+ key->tfm0 = crypto_alloc_sync_skcipher("ctr(aes)", 0, 0);
150142 if (IS_ERR(key->tfm0))
151143 goto err_tfm;
152144
153
- if (crypto_skcipher_setkey(key->tfm0, template->key,
145
+ if (crypto_sync_skcipher_setkey(key->tfm0, template->key,
154146 IEEE802154_LLSEC_KEY_SIZE))
155147 goto err_tfm0;
156148
157149 return key;
158150
159151 err_tfm0:
160
- crypto_free_skcipher(key->tfm0);
152
+ crypto_free_sync_skcipher(key->tfm0);
161153 err_tfm:
162154 for (i = 0; i < ARRAY_SIZE(key->tfm); i++)
163155 if (!IS_ERR_OR_NULL(key->tfm[i]))
164156 crypto_free_aead(key->tfm[i]);
165157
166
- kzfree(key);
158
+ kfree_sensitive(key);
167159 return NULL;
168160 }
169161
....@@ -177,8 +169,8 @@
177169 for (i = 0; i < ARRAY_SIZE(key->tfm); i++)
178170 crypto_free_aead(key->tfm[i]);
179171
180
- crypto_free_skcipher(key->tfm0);
181
- kzfree(key);
172
+ crypto_free_sync_skcipher(key->tfm0);
173
+ kfree_sensitive(key);
182174 }
183175
184176 static struct mac802154_llsec_key*
....@@ -269,7 +261,7 @@
269261 return 0;
270262
271263 fail:
272
- kzfree(new);
264
+ kfree_sensitive(new);
273265 return -ENOMEM;
274266 }
275267
....@@ -349,10 +341,10 @@
349341 devkey);
350342
351343 list_del(&pos->list);
352
- kzfree(devkey);
344
+ kfree_sensitive(devkey);
353345 }
354346
355
- kzfree(dev);
347
+ kfree_sensitive(dev);
356348 }
357349
358350 int mac802154_llsec_dev_add(struct mac802154_llsec *sec,
....@@ -622,7 +614,7 @@
622614 {
623615 u8 iv[16];
624616 struct scatterlist src;
625
- SKCIPHER_REQUEST_ON_STACK(req, key->tfm0);
617
+ SYNC_SKCIPHER_REQUEST_ON_STACK(req, key->tfm0);
626618 int err, datalen;
627619 unsigned char *data;
628620
....@@ -632,7 +624,7 @@
632624 datalen = skb_tail_pointer(skb) - data;
633625 sg_init_one(&src, data, datalen);
634626
635
- skcipher_request_set_tfm(req, key->tfm0);
627
+ skcipher_request_set_sync_tfm(req, key->tfm0);
636628 skcipher_request_set_callback(req, 0, NULL, NULL);
637629 skcipher_request_set_crypt(req, &src, &src, datalen, iv);
638630 err = crypto_skcipher_encrypt(req);
....@@ -690,7 +682,7 @@
690682
691683 rc = crypto_aead_encrypt(req);
692684
693
- kzfree(req);
685
+ kfree_sensitive(req);
694686
695687 return rc;
696688 }
....@@ -840,7 +832,7 @@
840832 unsigned char *data;
841833 int datalen;
842834 struct scatterlist src;
843
- SKCIPHER_REQUEST_ON_STACK(req, key->tfm0);
835
+ SYNC_SKCIPHER_REQUEST_ON_STACK(req, key->tfm0);
844836 int err;
845837
846838 llsec_geniv(iv, dev_addr, &hdr->sec);
....@@ -849,7 +841,7 @@
849841
850842 sg_init_one(&src, data, datalen);
851843
852
- skcipher_request_set_tfm(req, key->tfm0);
844
+ skcipher_request_set_sync_tfm(req, key->tfm0);
853845 skcipher_request_set_callback(req, 0, NULL, NULL);
854846 skcipher_request_set_crypt(req, &src, &src, datalen, iv);
855847
....@@ -894,7 +886,7 @@
894886
895887 rc = crypto_aead_decrypt(req);
896888
897
- kzfree(req);
889
+ kfree_sensitive(req);
898890 skb_trim(skb, skb->len - authlen);
899891
900892 return rc;
....@@ -934,7 +926,7 @@
934926 if (!devkey)
935927 list_add_rcu(&next->devkey.list, &dev->dev.keys);
936928 else
937
- kzfree(next);
929
+ kfree_sensitive(next);
938930
939931 spin_unlock_bh(&dev->lock);
940932 }