diff options
author | Scott Wood <scottwood@freescale.com> | 2014-04-07 23:49:35 (GMT) |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2014-04-07 23:49:35 (GMT) |
commit | 62b8c978ee6b8d135d9e7953221de58000dba986 (patch) | |
tree | 683b04b2e627f6710c22c151b23c8cc9a165315e /drivers/staging/sep | |
parent | 78fd82238d0e5716578c326404184a27ba67fd6e (diff) | |
download | linux-fsl-qoriq-62b8c978ee6b8d135d9e7953221de58000dba986.tar.xz |
Rewind v3.13-rc3+ (78fd82238d0e5716) to v3.12
Diffstat (limited to 'drivers/staging/sep')
-rw-r--r-- | drivers/staging/sep/sep_crypto.c | 4 | ||||
-rw-r--r-- | drivers/staging/sep/sep_main.c | 32 |
2 files changed, 21 insertions, 15 deletions
diff --git a/drivers/staging/sep/sep_crypto.c b/drivers/staging/sep/sep_crypto.c index b9262a7..490a31e 100644 --- a/drivers/staging/sep/sep_crypto.c +++ b/drivers/staging/sep/sep_crypto.c @@ -1134,7 +1134,7 @@ static int sep_crypto_block_data(struct ablkcipher_request *req) if (int_error < 0) { dev_warn(&ta_ctx->sep_used->pdev->dev, "oddball page error\n"); - return int_error; + return -ENOMEM; } else if (int_error == 1) { ta_ctx->src_sg = new_sg; ta_ctx->src_sg_hold = new_sg; @@ -1149,7 +1149,7 @@ static int sep_crypto_block_data(struct ablkcipher_request *req) if (int_error < 0) { dev_warn(&ta_ctx->sep_used->pdev->dev, "walk phys error %x\n", int_error); - return int_error; + return -ENOMEM; } else if (int_error == 1) { ta_ctx->dst_sg = new_sg; ta_ctx->dst_sg_hold = new_sg; diff --git a/drivers/staging/sep/sep_main.c b/drivers/staging/sep/sep_main.c index 1e80a40..6a98a20 100644 --- a/drivers/staging/sep/sep_main.c +++ b/drivers/staging/sep/sep_main.c @@ -493,7 +493,8 @@ int sep_free_dma_table_data_handler(struct sep_device *sep, * then we skip this step altogether as restricted * memory is not available to the o/s at all. */ - if (!(*dma_ctx)->secure_dma && dma->out_map_array) { + if (((*dma_ctx)->secure_dma == false) && + (dma->out_map_array)) { for (count = 0; count < dma->out_num_pages; count++) { dma_unmap_page(&sep->pdev->dev, @@ -514,7 +515,8 @@ int sep_free_dma_table_data_handler(struct sep_device *sep, } /* Again, we do this only for non secure dma */ - if (!(*dma_ctx)->secure_dma && dma->out_page_array) { + if (((*dma_ctx)->secure_dma == false) && + (dma->out_page_array)) { for (count = 0; count < dma->out_num_pages; count++) { if (!PageReserved(dma->out_page_array[count])) @@ -1261,8 +1263,13 @@ static int sep_lock_user_pages(struct sep_device *sep, } /* Convert the application virtual address into a set of physical */ - result = get_user_pages_fast(app_virt_addr, num_pages, - ((in_out_flag == SEP_DRIVER_IN_FLAG) ? 0 : 1), page_array); + down_read(¤t->mm->mmap_sem); + result = get_user_pages(current, current->mm, app_virt_addr, + num_pages, + ((in_out_flag == SEP_DRIVER_IN_FLAG) ? 0 : 1), + 0, page_array, NULL); + + up_read(¤t->mm->mmap_sem); /* Check the number of pages locked - if not all then exit with error */ if (result != num_pages) { @@ -1945,7 +1952,7 @@ static int sep_prepare_input_dma_table(struct sep_device *sep, } /* Check if the pages are in Kernel Virtual Address layout */ - if (is_kva) + if (is_kva == true) error = sep_lock_kernel_pages(sep, app_virt_addr, data_size, &lli_array_ptr, SEP_DRIVER_IN_FLAG, dma_ctx); @@ -2439,7 +2446,7 @@ static int sep_prepare_input_output_dma_table(struct sep_device *sep, dma_ctx->dma_res_arr[dma_ctx->nr_dcb_creat].out_page_array = NULL; /* Lock the pages of the buffer and translate them to pages */ - if (is_kva) { + if (is_kva == true) { dev_dbg(&sep->pdev->dev, "[PID%d] Locking kernel input pages\n", current->pid); error = sep_lock_kernel_pages(sep, app_virt_in_addr, @@ -2483,7 +2490,7 @@ static int sep_prepare_input_output_dma_table(struct sep_device *sep, goto end_function; } - if (dma_ctx->secure_dma) { + if (dma_ctx->secure_dma == true) { /* secure_dma requires use of non accessible memory */ dev_dbg(&sep->pdev->dev, "[PID%d] in secure_dma\n", current->pid); @@ -2720,11 +2727,11 @@ int sep_prepare_input_output_dma_table_in_dcb(struct sep_device *sep, dcb_table_ptr->tail_data_size = 0; dcb_table_ptr->out_vr_tail_pt = 0; - if (isapplet) { + if (isapplet == true) { /* Check if there is enough data for DMA operation */ if (data_in_size < SEP_DRIVER_MIN_DATA_SIZE_PER_TABLE) { - if (is_kva) { + if (is_kva == true) { error = -ENODEV; goto end_function_error; } else { @@ -2765,7 +2772,7 @@ int sep_prepare_input_output_dma_table_in_dcb(struct sep_device *sep, if (tail_size) { if (tail_size > sizeof(dcb_table_ptr->tail_data)) return -EINVAL; - if (is_kva) { + if (is_kva == true) { error = -ENODEV; goto end_function_error; } else { @@ -2876,7 +2883,7 @@ static int sep_free_dma_tables_and_dcb(struct sep_device *sep, bool isapplet, if (!dma_ctx || !*dma_ctx) /* nothing to be done here*/ return 0; - if (!(*dma_ctx)->secure_dma && isapplet) { + if (((*dma_ctx)->secure_dma == false) && (isapplet == true)) { dev_dbg(&sep->pdev->dev, "[PID%d] handling applet\n", current->pid); @@ -2895,7 +2902,7 @@ static int sep_free_dma_tables_and_dcb(struct sep_device *sep, bool isapplet, pt_hold = (unsigned long)dcb_table_ptr-> out_vr_tail_pt; tail_pt = (void *)pt_hold; - if (is_kva) { + if (is_kva == true) { error = -ENODEV; break; } else { @@ -4073,7 +4080,6 @@ static int sep_register_driver_with_fs(struct sep_device *sep) if (ret_val) { dev_warn(&sep->pdev->dev, "sysfs attribute1 fails for SEP %x\n", ret_val); - misc_deregister(&sep->miscdev_sep); return ret_val; } |