diff --git a/drivers/crypto/hisilicon/hpre/hpre_crypto.c b/drivers/crypto/hisilicon/hpre/hpre_crypto.c index 4d64e60820776344fcb3aecbf07341824a76e72f..c3df886ec44ceb114fe70fdee30cf3fa4b9a38f5 100644 --- a/drivers/crypto/hisilicon/hpre/hpre_crypto.c +++ b/drivers/crypto/hisilicon/hpre/hpre_crypto.c @@ -579,7 +579,7 @@ static void _rsa_cb(struct hpre_ctx *ctx, void *resp) akcipher_request_complete(areq, ret); } -static unsigned long hpre_rsa_key_size_check(unsigned int len) +static int hpre_rsa_key_size_check(unsigned int len) { unsigned int bitslen = len << HPRE_BITS_2_BYTES_SHIFT; @@ -599,7 +599,7 @@ static unsigned long hpre_rsa_key_size_check(unsigned int len) return 0; default: return -1; - }; + } } static int hpre_rsa_enc(struct akcipher_request *req) diff --git a/drivers/crypto/hisilicon/hpre/hpre_main.c b/drivers/crypto/hisilicon/hpre/hpre_main.c index 053aea82eb5db4cc016d4b46a5832e02135a4968..ad8f348a08a4c59ce3cc64068841613fed9dd441 100644 --- a/drivers/crypto/hisilicon/hpre/hpre_main.c +++ b/drivers/crypto/hisilicon/hpre/hpre_main.c @@ -566,7 +566,7 @@ static int hpre_create_debugfs_file(struct hpre_ctrl *ctrl, struct dentry *dir, else file_dir = ctrl->debug_root; - if (type > HPRE_DEBUG_FILE_NUM) + if (type >= HPRE_DEBUG_FILE_NUM) return -EINVAL; spin_lock_init(&ctrl->files[indx].lock); diff --git a/drivers/uacce/uacce.c b/drivers/uacce/uacce.c index e8e6f6d77d6a8f2d9f7ca3bfa70b06facd040ab4..44e61b551f5d1830532c67296cfd4a515e79c6e4 100644 --- a/drivers/uacce/uacce.c +++ b/drivers/uacce/uacce.c @@ -277,7 +277,7 @@ uacce_queue_mmap_qfr(struct uacce_queue *q, page_ref_count(qfr->pages[0])); for (i = 0; i < qfr->nr_pages; i++) { get_page(qfr->pages[i]); - ret = remap_pfn_range(vma, vma->vm_start + (i << PAGE_SHIFT), + ret = remap_pfn_range(vma, vma->vm_start + i * PAGE_SIZE, page_to_pfn(qfr->pages[i]), PAGE_SIZE, vma->vm_page_prot); if (ret) @@ -294,8 +294,7 @@ uacce_queue_mmap_qfr(struct uacce_queue *q, static struct uacce_qfile_region *uacce_create_region(struct uacce_queue *q, struct vm_area_struct *vma, - enum uacce_qfrt type, - int flags) + enum uacce_qfrt type, u32 flags) { struct uacce_qfile_region *qfr; struct uacce *uacce = q->uacce; @@ -491,7 +490,7 @@ static int uacce_start_queue(struct uacce_queue *q) err_with_vmap: for (j = i; j >= 0; j--) { - qfr = q->qfrs[i]; + qfr = q->qfrs[j]; if (qfr && qfr->kaddr) { vunmap(qfr->kaddr); qfr->kaddr = NULL; @@ -801,7 +800,8 @@ static int uacce_fops_mmap(struct file *filep, struct vm_area_struct *vma) struct uacce *uacce = q->uacce; enum uacce_qfrt type; struct uacce_qfile_region *qfr; - int flags = 0, ret; + unsigned int flags = 0; + int ret; type = uacce_get_region_type(uacce, vma); if (type == UACCE_QFRT_INVALID) diff --git a/include/linux/uacce.h b/include/linux/uacce.h index eae9f1a48add74adbd43372afba5939f49dca843..3c181150c8f285506670aa15ec7ec179d50a90b7 100644 --- a/include/linux/uacce.h +++ b/include/linux/uacce.h @@ -23,8 +23,8 @@ struct uacce_qfile_region { unsigned long iova; /* iova share between user and device space */ struct page **pages; unsigned int nr_pages; - unsigned long prot; - int flags; + int prot; + unsigned int flags; struct list_head qs; /* qs sharing the same region, for ss */ void *kaddr; /* kernel addr, for dko */ dma_addr_t dma; /* dma address, if created by dma api */ @@ -87,7 +87,7 @@ struct uacce { const char *drv_name; const char *algs; const char *api_ver; - int flags; + unsigned int flags; unsigned long qf_pg_start[UACCE_QFRT_MAX]; int status; struct uacce_ops *ops;