Skip to content

Commit 0269534

Browse files
Yang Shengregkh
authored andcommitted
uacce: implement mremap in uacce_vm_ops to return -EPERM
The current uacce_vm_ops does not support the mremap operation of vm_operations_struct. Implement .mremap to return -EPERM to remind users. The reason we need to explicitly disable mremap is that when the driver does not implement .mremap, it uses the default mremap method. This could lead to a risk scenario: An application might first mmap address p1, then mremap to p2, followed by munmap(p1), and finally munmap(p2). Since the default mremap copies the original vma's vm_private_data (i.e., q) to the new vma, both munmap operations would trigger vma_close, causing q->qfr to be freed twice(qfr will be set to null here, so repeated release is ok). Fixes: 015d239 ("uacce: add uacce driver") Cc: stable@vger.kernel.org Signed-off-by: Yang Shen <shenyang39@huawei.com> Signed-off-by: Chenghai Huang <huangchenghai2@huawei.com> Acked-by: Zhangfei Gao <zhangfei.gao@linaro.org> Link: https://patch.msgid.link/20251202061256.4158641-4-huangchenghai2@huawei.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 98eec34 commit 0269534

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

drivers/misc/uacce/uacce.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,14 @@ static void uacce_vma_close(struct vm_area_struct *vma)
214214
}
215215
}
216216

217+
static int uacce_vma_mremap(struct vm_area_struct *area)
218+
{
219+
return -EPERM;
220+
}
221+
217222
static const struct vm_operations_struct uacce_vm_ops = {
218223
.close = uacce_vma_close,
224+
.mremap = uacce_vma_mremap,
219225
};
220226

221227
static int uacce_fops_mmap(struct file *filep, struct vm_area_struct *vma)

0 commit comments

Comments
 (0)