| From foo@baz Sun Aug 26 09:13:00 CEST 2018 |
| From: Guenter Roeck <linux@roeck-us.net> |
| Date: Mon, 23 Jul 2018 14:39:33 -0700 |
| Subject: media: staging: omap4iss: Include asm/cacheflush.h after generic includes |
| |
| From: Guenter Roeck <linux@roeck-us.net> |
| |
| [ Upstream commit 0894da849f145af51bde88a6b84f95b9c9e0bc66 ] |
| |
| Including asm/cacheflush.h first results in the following build error |
| when trying to build sparc32:allmodconfig, because 'struct page' has not |
| been declared, and the function declaration ends up creating a separate |
| (private) declaration of struct page (as a result of function arguments |
| being in the scope of the function declaration and definition, not in |
| global scope). |
| |
| The C scoping rules do not just affect variable visibility, they also |
| affect type declaration visibility. |
| |
| The end result is that when the actual call site is seen in |
| <linux/highmem.h>, the 'struct page' type in the caller is not the same |
| 'struct page' that the function was declared with, resulting in: |
| |
| In file included from arch/sparc/include/asm/page.h:10:0, |
| ... |
| from drivers/staging/media/omap4iss/iss_video.c:15: |
| include/linux/highmem.h: In function 'clear_user_highpage': |
| include/linux/highmem.h:137:31: error: |
| passing argument 1 of 'sparc_flush_page_to_ram' from incompatible |
| pointer type |
| |
| Include generic includes files first to fix the problem. |
| |
| Fixes: fc96d58c10162 ("[media] v4l: omap4iss: Add support for OMAP4 camera interface - Video devices") |
| Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Acked-by: David S. Miller <davem@davemloft.net> |
| Cc: Randy Dunlap <rdunlap@infradead.org> |
| Signed-off-by: Guenter Roeck <linux@roeck-us.net> |
| [ Added explanation of C scope rules - Linus ] |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/staging/media/omap4iss/iss_video.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/staging/media/omap4iss/iss_video.c |
| +++ b/drivers/staging/media/omap4iss/iss_video.c |
| @@ -11,7 +11,6 @@ |
| * (at your option) any later version. |
| */ |
| |
| -#include <asm/cacheflush.h> |
| #include <linux/clk.h> |
| #include <linux/mm.h> |
| #include <linux/pagemap.h> |
| @@ -24,6 +23,8 @@ |
| #include <media/v4l2-ioctl.h> |
| #include <media/v4l2-mc.h> |
| |
| +#include <asm/cacheflush.h> |
| + |
| #include "iss_video.h" |
| #include "iss.h" |
| |