Merge "soc: qcom: hab: resolve NULL pointer dereference issues"

This commit is contained in:
Linux Build Service Account 2018-07-16 01:31:34 -07:00 committed by Gerrit - the friendly Code Review server
commit 5e972f6b60
2 changed files with 13 additions and 11 deletions

View file

@ -361,18 +361,19 @@ static int hab_map_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
struct page *page;
struct pages_list *pglist;
unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
/* PHY address */
unsigned long fault_offset =
(unsigned long)vmf->virtual_address - vma->vm_start + offset;
unsigned long fault_index = fault_offset>>PAGE_SHIFT;
unsigned long offset, fault_offset, fault_index;
int page_idx;
if (vma == NULL)
return VM_FAULT_SIGBUS;
offset = vma->vm_pgoff << PAGE_SHIFT;
/* PHY address */
fault_offset =
(unsigned long)vmf->virtual_address - vma->vm_start + offset;
fault_index = fault_offset>>PAGE_SHIFT;
pglist = vma->vm_private_data;
page_idx = fault_index - pglist->index;
@ -463,6 +464,7 @@ static int habmem_imp_hyp_map_fd(void *imp_ctx,
int i, j, k = 0;
pgprot_t prot = PAGE_KERNEL;
int32_t fd, size;
int ret;
DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
if (!pfn_table || !priv)
@ -505,9 +507,10 @@ static int habmem_imp_hyp_map_fd(void *imp_ctx,
exp_info.priv = pglist;
pglist->dmabuf = dma_buf_export(&exp_info);
if (IS_ERR(pglist->dmabuf)) {
ret = PTR_ERR(pglist->dmabuf);
kfree(pages);
kfree(pglist);
return PTR_ERR(pglist->dmabuf);
return ret;
}
fd = dma_buf_fd(pglist->dmabuf, O_CLOEXEC);
@ -579,8 +582,8 @@ static int habmem_imp_hyp_map_kva(void *imp_ctx,
pglist->kva = vmap(pglist->pages, pglist->npages, VM_MAP, prot);
if (pglist->kva == NULL) {
kfree(pages);
kfree(pglist);
pr_err("%ld pages vmap failed\n", pglist->npages);
kfree(pglist);
return -ENOMEM;
}

View file

@ -124,8 +124,7 @@ void habmem_remove_export(struct export_desc *exp)
struct uhab_context *ctx;
if (!exp || !exp->ctx || !exp->pchan) {
pr_err("failed to find valid info in exp %pK ctx %pK pchan %pK\n",
exp, exp->ctx, exp->pchan);
pr_err("failed to find valid info in exp %pK\n", exp);
return;
}