brcm2708: fix vchiq driver get_user_pages use
authorJonas Gorski <jonas.gorski@gmail.com>
Thu, 20 Jun 2019 09:18:19 +0000 (11:18 +0200)
committerJonas Gorski <jonas.gorski@gmail.com>
Thu, 20 Jun 2019 09:48:36 +0000 (11:48 +0200)
Linux 4.4.128 changed the signature of get_user_pages, causing
out-of-tree drivers using to break. Fix this by updating to the new
signature.

Fixes the following build error:

  CC      drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.o
drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c: In function 'dump_phys_mem':
drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c:1501:3: warning: passing argument 7 of 'get_user_pages' from incompatible pointer type [-Wincompatible-pointer-types]
   pages,                    /* pages (array of page pointers) */
   ^
In file included from drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c:42:0:
include/linux/mm.h:1200:6: note: expected 'struct vm_area_struct **' but argument is of type 'struct page **'
 long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
      ^
drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c:1495:7: error: too many arguments to function 'get_user_pages'
  rc = get_user_pages(current,      /* task */
       ^
In file included from drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c:42:0:
include/linux/mm.h:1200:6: note: declared here
 long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
      ^
scripts/Makefile.build:277: recipe for target 'drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.o' failed
make[7]: *** [drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.o] Error 1
scripts/Makefile.build:484: recipe for target 'drivers/misc/vc04_services' failed
make[6]: *** [drivers/misc/vc04_services] Error 2
scripts/Makefile.build:484: recipe for target 'drivers/misc' failed
make[5]: *** [drivers/misc] Error 2
Makefile:993: recipe for target 'drivers' failed
make[4]: *** [drivers] Error 2

Fixes: 6c5c3a2edccf ("kernel: Update to version 4.4.182")
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
target/linux/brcm2708/patches-4.4/0036-bcm2708-vchiq-driver.patch

index 7247fa6951c685caa1866ef752c8c2ba7618d412..d4993ba2bc370351582ce4aebc93cec82046c1aa 100644 (file)
@@ -1848,7 +1848,7 @@ vchiq: hack: Add include depecated dma include file
 +#endif /* VCHIQ_2835_H */
 --- /dev/null
 +++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
-@@ -0,0 +1,586 @@
+@@ -0,0 +1,585 @@
 +/**
 + * Copyright (c) 2010-2012 Broadcom. All rights reserved.
 + *
@@ -2274,8 +2274,7 @@ vchiq: hack: Add include depecated dma include file
 +              actual_pages = get_user_pages(task, task->mm,
 +                                        (unsigned long)buf & ~(PAGE_SIZE - 1),
 +                                        num_pages,
-+                                        (type == PAGELIST_READ) /*Write */ ,
-+                                        0 /*Force */ ,
++                                        (type == PAGELIST_READ) ? FOLL_WRITE : 0 /*Write */,
 +                                        pages,
 +                                        NULL /*vmas */);
 +              up_read(&task->mm->mmap_sem);
@@ -2437,7 +2436,7 @@ vchiq: hack: Add include depecated dma include file
 +}
 --- /dev/null
 +++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
-@@ -0,0 +1,2903 @@
+@@ -0,0 +1,2902 @@
 +/**
 + * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved.
 + * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -3918,7 +3917,6 @@ vchiq: hack: Add include depecated dma include file
 +              (unsigned long)virt_addr, /* start */
 +              num_pages,                /* len */
 +              0,                        /* write */
-+              0,                        /* force */
 +              pages,                    /* pages (array of page pointers) */
 +              NULL);                    /* vmas */
 +      up_read(&current->mm->mmap_sem);