| .. | .. |
|---|
| 147 | 147 | size_t blocksize, keybytes, keylength, n; |
|---|
| 148 | 148 | unsigned char *inblockdata, *outblockdata, *rawkey; |
|---|
| 149 | 149 | struct xdr_netobj inblock, outblock; |
|---|
| 150 | | - struct crypto_skcipher *cipher; |
|---|
| 150 | + struct crypto_sync_skcipher *cipher; |
|---|
| 151 | 151 | u32 ret = EINVAL; |
|---|
| 152 | 152 | |
|---|
| 153 | 153 | blocksize = gk5e->blocksize; |
|---|
| .. | .. |
|---|
| 157 | 157 | if ((inkey->len != keylength) || (outkey->len != keylength)) |
|---|
| 158 | 158 | goto err_return; |
|---|
| 159 | 159 | |
|---|
| 160 | | - cipher = crypto_alloc_skcipher(gk5e->encrypt_name, 0, |
|---|
| 161 | | - CRYPTO_ALG_ASYNC); |
|---|
| 160 | + cipher = crypto_alloc_sync_skcipher(gk5e->encrypt_name, 0, 0); |
|---|
| 162 | 161 | if (IS_ERR(cipher)) |
|---|
| 163 | 162 | goto err_return; |
|---|
| 164 | | - if (crypto_skcipher_setkey(cipher, inkey->data, inkey->len)) |
|---|
| 163 | + if (crypto_sync_skcipher_setkey(cipher, inkey->data, inkey->len)) |
|---|
| 165 | 164 | goto err_return; |
|---|
| 166 | 165 | |
|---|
| 167 | 166 | /* allocate and set up buffers */ |
|---|
| .. | .. |
|---|
| 229 | 228 | ret = 0; |
|---|
| 230 | 229 | |
|---|
| 231 | 230 | err_free_raw: |
|---|
| 232 | | - memset(rawkey, 0, keybytes); |
|---|
| 233 | | - kfree(rawkey); |
|---|
| 231 | + kfree_sensitive(rawkey); |
|---|
| 234 | 232 | err_free_out: |
|---|
| 235 | | - memset(outblockdata, 0, blocksize); |
|---|
| 236 | | - kfree(outblockdata); |
|---|
| 233 | + kfree_sensitive(outblockdata); |
|---|
| 237 | 234 | err_free_in: |
|---|
| 238 | | - memset(inblockdata, 0, blocksize); |
|---|
| 239 | | - kfree(inblockdata); |
|---|
| 235 | + kfree_sensitive(inblockdata); |
|---|
| 240 | 236 | err_free_cipher: |
|---|
| 241 | | - crypto_free_skcipher(cipher); |
|---|
| 237 | + crypto_free_sync_skcipher(cipher); |
|---|
| 242 | 238 | err_return: |
|---|
| 243 | 239 | return ret; |
|---|
| 244 | 240 | } |
|---|