Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ed2288c authored by Al Viro's avatar Al Viro
Browse files

vchiq_2835_arm: switch to get_user_pages_fast()



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 2bd6bf03
Loading
Loading
Loading
Loading
+7 −13
Original line number Diff line number Diff line
@@ -92,8 +92,7 @@ static irqreturn_t
vchiq_doorbell_irq(int irq, void *dev_id);

static struct vchiq_pagelist_info *
create_pagelist(char __user *buf, size_t count, unsigned short type,
		struct task_struct *task);
create_pagelist(char __user *buf, size_t count, unsigned short type);

static void
free_pagelist(struct vchiq_pagelist_info *pagelistinfo,
@@ -251,8 +250,7 @@ vchiq_prepare_bulk_data(VCHIQ_BULK_T *bulk, VCHI_MEM_HANDLE_T memhandle,
	pagelistinfo = create_pagelist((char __user *)offset, size,
				       (dir == VCHIQ_BULK_RECEIVE)
				       ? PAGELIST_READ
				       : PAGELIST_WRITE,
				       current);
				       : PAGELIST_WRITE);

	if (!pagelistinfo)
		return VCHIQ_ERROR;
@@ -391,8 +389,7 @@ cleanup_pagelistinfo(struct vchiq_pagelist_info *pagelistinfo)
*/

static struct vchiq_pagelist_info *
create_pagelist(char __user *buf, size_t count, unsigned short type,
		struct task_struct *task)
create_pagelist(char __user *buf, size_t count, unsigned short type)
{
	PAGELIST_T *pagelist;
	struct vchiq_pagelist_info *pagelistinfo;
@@ -472,14 +469,11 @@ create_pagelist(char __user *buf, size_t count, unsigned short type,
		}
		/* do not try and release vmalloc pages */
	} else {
		down_read(&task->mm->mmap_sem);
		actual_pages = get_user_pages(
		actual_pages = get_user_pages_fast(
				          (unsigned long)buf & PAGE_MASK,
					  num_pages,
					  (type == PAGELIST_READ) ? FOLL_WRITE : 0,
					  pages,
					  NULL /*vmas */);
		up_read(&task->mm->mmap_sem);
					  type == PAGELIST_READ,
					  pages);

		if (actual_pages != num_pages) {
			vchiq_log_info(vchiq_arm_log_level,