| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * 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. |
|---|
| 12 | 4 | * |
|---|
| 13 | 5 | * Written by: |
|---|
| 14 | 6 | * Phoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de> |
|---|
| .. | .. |
|---|
| 57 | 49 | |
|---|
| 58 | 50 | msl = container_of(sl, struct mac802154_llsec_seclevel, level); |
|---|
| 59 | 51 | list_del(&sl->list); |
|---|
| 60 | | - kzfree(msl); |
|---|
| 52 | + kfree_sensitive(msl); |
|---|
| 61 | 53 | } |
|---|
| 62 | 54 | |
|---|
| 63 | 55 | list_for_each_entry_safe(dev, dn, &sec->table.devices, list) { |
|---|
| .. | .. |
|---|
| 74 | 66 | mkey = container_of(key->key, struct mac802154_llsec_key, key); |
|---|
| 75 | 67 | list_del(&key->list); |
|---|
| 76 | 68 | llsec_key_put(mkey); |
|---|
| 77 | | - kzfree(key); |
|---|
| 69 | + kfree_sensitive(key); |
|---|
| 78 | 70 | } |
|---|
| 79 | 71 | } |
|---|
| 80 | 72 | |
|---|
| .. | .. |
|---|
| 146 | 138 | goto err_tfm; |
|---|
| 147 | 139 | } |
|---|
| 148 | 140 | |
|---|
| 149 | | - key->tfm0 = crypto_alloc_skcipher("ctr(aes)", 0, CRYPTO_ALG_ASYNC); |
|---|
| 141 | + key->tfm0 = crypto_alloc_sync_skcipher("ctr(aes)", 0, 0); |
|---|
| 150 | 142 | if (IS_ERR(key->tfm0)) |
|---|
| 151 | 143 | goto err_tfm; |
|---|
| 152 | 144 | |
|---|
| 153 | | - if (crypto_skcipher_setkey(key->tfm0, template->key, |
|---|
| 145 | + if (crypto_sync_skcipher_setkey(key->tfm0, template->key, |
|---|
| 154 | 146 | IEEE802154_LLSEC_KEY_SIZE)) |
|---|
| 155 | 147 | goto err_tfm0; |
|---|
| 156 | 148 | |
|---|
| 157 | 149 | return key; |
|---|
| 158 | 150 | |
|---|
| 159 | 151 | err_tfm0: |
|---|
| 160 | | - crypto_free_skcipher(key->tfm0); |
|---|
| 152 | + crypto_free_sync_skcipher(key->tfm0); |
|---|
| 161 | 153 | err_tfm: |
|---|
| 162 | 154 | for (i = 0; i < ARRAY_SIZE(key->tfm); i++) |
|---|
| 163 | 155 | if (!IS_ERR_OR_NULL(key->tfm[i])) |
|---|
| 164 | 156 | crypto_free_aead(key->tfm[i]); |
|---|
| 165 | 157 | |
|---|
| 166 | | - kzfree(key); |
|---|
| 158 | + kfree_sensitive(key); |
|---|
| 167 | 159 | return NULL; |
|---|
| 168 | 160 | } |
|---|
| 169 | 161 | |
|---|
| .. | .. |
|---|
| 177 | 169 | for (i = 0; i < ARRAY_SIZE(key->tfm); i++) |
|---|
| 178 | 170 | crypto_free_aead(key->tfm[i]); |
|---|
| 179 | 171 | |
|---|
| 180 | | - crypto_free_skcipher(key->tfm0); |
|---|
| 181 | | - kzfree(key); |
|---|
| 172 | + crypto_free_sync_skcipher(key->tfm0); |
|---|
| 173 | + kfree_sensitive(key); |
|---|
| 182 | 174 | } |
|---|
| 183 | 175 | |
|---|
| 184 | 176 | static struct mac802154_llsec_key* |
|---|
| .. | .. |
|---|
| 269 | 261 | return 0; |
|---|
| 270 | 262 | |
|---|
| 271 | 263 | fail: |
|---|
| 272 | | - kzfree(new); |
|---|
| 264 | + kfree_sensitive(new); |
|---|
| 273 | 265 | return -ENOMEM; |
|---|
| 274 | 266 | } |
|---|
| 275 | 267 | |
|---|
| .. | .. |
|---|
| 349 | 341 | devkey); |
|---|
| 350 | 342 | |
|---|
| 351 | 343 | list_del(&pos->list); |
|---|
| 352 | | - kzfree(devkey); |
|---|
| 344 | + kfree_sensitive(devkey); |
|---|
| 353 | 345 | } |
|---|
| 354 | 346 | |
|---|
| 355 | | - kzfree(dev); |
|---|
| 347 | + kfree_sensitive(dev); |
|---|
| 356 | 348 | } |
|---|
| 357 | 349 | |
|---|
| 358 | 350 | int mac802154_llsec_dev_add(struct mac802154_llsec *sec, |
|---|
| .. | .. |
|---|
| 622 | 614 | { |
|---|
| 623 | 615 | u8 iv[16]; |
|---|
| 624 | 616 | struct scatterlist src; |
|---|
| 625 | | - SKCIPHER_REQUEST_ON_STACK(req, key->tfm0); |
|---|
| 617 | + SYNC_SKCIPHER_REQUEST_ON_STACK(req, key->tfm0); |
|---|
| 626 | 618 | int err, datalen; |
|---|
| 627 | 619 | unsigned char *data; |
|---|
| 628 | 620 | |
|---|
| .. | .. |
|---|
| 632 | 624 | datalen = skb_tail_pointer(skb) - data; |
|---|
| 633 | 625 | sg_init_one(&src, data, datalen); |
|---|
| 634 | 626 | |
|---|
| 635 | | - skcipher_request_set_tfm(req, key->tfm0); |
|---|
| 627 | + skcipher_request_set_sync_tfm(req, key->tfm0); |
|---|
| 636 | 628 | skcipher_request_set_callback(req, 0, NULL, NULL); |
|---|
| 637 | 629 | skcipher_request_set_crypt(req, &src, &src, datalen, iv); |
|---|
| 638 | 630 | err = crypto_skcipher_encrypt(req); |
|---|
| .. | .. |
|---|
| 690 | 682 | |
|---|
| 691 | 683 | rc = crypto_aead_encrypt(req); |
|---|
| 692 | 684 | |
|---|
| 693 | | - kzfree(req); |
|---|
| 685 | + kfree_sensitive(req); |
|---|
| 694 | 686 | |
|---|
| 695 | 687 | return rc; |
|---|
| 696 | 688 | } |
|---|
| .. | .. |
|---|
| 840 | 832 | unsigned char *data; |
|---|
| 841 | 833 | int datalen; |
|---|
| 842 | 834 | struct scatterlist src; |
|---|
| 843 | | - SKCIPHER_REQUEST_ON_STACK(req, key->tfm0); |
|---|
| 835 | + SYNC_SKCIPHER_REQUEST_ON_STACK(req, key->tfm0); |
|---|
| 844 | 836 | int err; |
|---|
| 845 | 837 | |
|---|
| 846 | 838 | llsec_geniv(iv, dev_addr, &hdr->sec); |
|---|
| .. | .. |
|---|
| 849 | 841 | |
|---|
| 850 | 842 | sg_init_one(&src, data, datalen); |
|---|
| 851 | 843 | |
|---|
| 852 | | - skcipher_request_set_tfm(req, key->tfm0); |
|---|
| 844 | + skcipher_request_set_sync_tfm(req, key->tfm0); |
|---|
| 853 | 845 | skcipher_request_set_callback(req, 0, NULL, NULL); |
|---|
| 854 | 846 | skcipher_request_set_crypt(req, &src, &src, datalen, iv); |
|---|
| 855 | 847 | |
|---|
| .. | .. |
|---|
| 894 | 886 | |
|---|
| 895 | 887 | rc = crypto_aead_decrypt(req); |
|---|
| 896 | 888 | |
|---|
| 897 | | - kzfree(req); |
|---|
| 889 | + kfree_sensitive(req); |
|---|
| 898 | 890 | skb_trim(skb, skb->len - authlen); |
|---|
| 899 | 891 | |
|---|
| 900 | 892 | return rc; |
|---|
| .. | .. |
|---|
| 934 | 926 | if (!devkey) |
|---|
| 935 | 927 | list_add_rcu(&next->devkey.list, &dev->dev.keys); |
|---|
| 936 | 928 | else |
|---|
| 937 | | - kzfree(next); |
|---|
| 929 | + kfree_sensitive(next); |
|---|
| 938 | 930 | |
|---|
| 939 | 931 | spin_unlock_bh(&dev->lock); |
|---|
| 940 | 932 | } |
|---|