aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/nfc
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2016-01-24 08:19:31 -0500
committerHerbert Xu <herbert@gondor.apana.org.au>2016-01-27 07:36:09 -0500
commit4a31340b36302d46207c6bb54d103d9fb568e916 (patch)
treee090b914f20388159c09fab1a3c5d08cd32d5507 /drivers/nfc
parent9534d67195118c39edf2ec0bb74e59993c4c0677 (diff)
nfc: s3fwrn5: Use shash
This patch replaces uses of the long obsolete hash interface with shash. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/nfc')
-rw-r--r--drivers/nfc/s3fwrn5/firmware.c36
1 files changed, 27 insertions, 9 deletions
diff --git a/drivers/nfc/s3fwrn5/firmware.c b/drivers/nfc/s3fwrn5/firmware.c
index 64a90252c57f..5f97da1947e3 100644
--- a/drivers/nfc/s3fwrn5/firmware.c
+++ b/drivers/nfc/s3fwrn5/firmware.c
@@ -19,7 +19,7 @@
19 19
20#include <linux/completion.h> 20#include <linux/completion.h>
21#include <linux/firmware.h> 21#include <linux/firmware.h>
22#include <linux/crypto.h> 22#include <crypto/hash.h>
23#include <crypto/sha.h> 23#include <crypto/sha.h>
24 24
25#include "s3fwrn5.h" 25#include "s3fwrn5.h"
@@ -429,8 +429,7 @@ int s3fwrn5_fw_download(struct s3fwrn5_fw_info *fw_info)
429{ 429{
430 struct s3fwrn5_fw_image *fw = &fw_info->fw; 430 struct s3fwrn5_fw_image *fw = &fw_info->fw;
431 u8 hash_data[SHA1_DIGEST_SIZE]; 431 u8 hash_data[SHA1_DIGEST_SIZE];
432 struct scatterlist sg; 432 struct crypto_shash *tfm;
433 struct hash_desc desc;
434 u32 image_size, off; 433 u32 image_size, off;
435 int ret; 434 int ret;
436 435
@@ -438,12 +437,31 @@ int s3fwrn5_fw_download(struct s3fwrn5_fw_info *fw_info)
438 437
439 /* Compute SHA of firmware data */ 438 /* Compute SHA of firmware data */
440 439
441 sg_init_one(&sg, fw->image, image_size); 440 tfm = crypto_alloc_shash("sha1", 0, 0);
442 desc.tfm = crypto_alloc_hash("sha1", 0, CRYPTO_ALG_ASYNC); 441 if (IS_ERR(tfm)) {
443 crypto_hash_init(&desc); 442 ret = PTR_ERR(tfm);
444 crypto_hash_update(&desc, &sg, image_size); 443 dev_err(&fw_info->ndev->nfc_dev->dev,
445 crypto_hash_final(&desc, hash_data); 444 "Cannot allocate shash (code=%d)\n", ret);
446 crypto_free_hash(desc.tfm); 445 goto out;
446 }
447
448 {
449 SHASH_DESC_ON_STACK(desc, tfm);
450
451 desc->tfm = tfm;
452 desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
453
454 ret = crypto_shash_digest(desc, fw->image, image_size,
455 hash_data);
456 shash_desc_zero(desc);
457 }
458
459 crypto_free_shash(tfm);
460 if (ret) {
461 dev_err(&fw_info->ndev->nfc_dev->dev,
462 "Cannot compute hash (code=%d)\n", ret);
463 goto out;
464 }
447 465
448 /* Firmware update process */ 466 /* Firmware update process */
449 467