Commit d55875f5d52c067e2eff7536368596b4a96b3ade
Committed by
Linus Torvalds
1 parent
68a9a435e4
include/asm-generic/ioctl.h: fix _IOC_TYPECHECK sparse error
When running sparse over drivers/media/v4l2-core/v4l2-ioctl.c I get these errors: drivers/media/v4l2-core/v4l2-ioctl.c:2043:9: error: bad integer constant expression drivers/media/v4l2-core/v4l2-ioctl.c:2044:9: error: bad integer constant expression drivers/media/v4l2-core/v4l2-ioctl.c:2045:9: error: bad integer constant expression drivers/media/v4l2-core/v4l2-ioctl.c:2046:9: error: bad integer constant expression etc. The root cause of that turns out to be in include/asm-generic/ioctl.h: #include <uapi/asm-generic/ioctl.h> /* provoke compile error for invalid uses of size argument */ extern unsigned int __invalid_size_argument_for_IOC; #define _IOC_TYPECHECK(t) \ ((sizeof(t) == sizeof(t[1]) && \ sizeof(t) < (1 << _IOC_SIZEBITS)) ? \ sizeof(t) : __invalid_size_argument_for_IOC) If it is defined as this (as is already done if __KERNEL__ is not defined): #define _IOC_TYPECHECK(t) (sizeof(t)) then all is well with the world. This patch allows sparse to work correctly. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 1 changed file with 5 additions and 0 deletions Side-by-side Diff
include/asm-generic/ioctl.h
... | ... | @@ -3,11 +3,16 @@ |
3 | 3 | |
4 | 4 | #include <uapi/asm-generic/ioctl.h> |
5 | 5 | |
6 | +#ifdef __CHECKER__ | |
7 | +#define _IOC_TYPECHECK(t) (sizeof(t)) | |
8 | +#else | |
6 | 9 | /* provoke compile error for invalid uses of size argument */ |
7 | 10 | extern unsigned int __invalid_size_argument_for_IOC; |
8 | 11 | #define _IOC_TYPECHECK(t) \ |
9 | 12 | ((sizeof(t) == sizeof(t[1]) && \ |
10 | 13 | sizeof(t) < (1 << _IOC_SIZEBITS)) ? \ |
11 | 14 | sizeof(t) : __invalid_size_argument_for_IOC) |
15 | +#endif | |
16 | + | |
12 | 17 | #endif /* _ASM_GENERIC_IOCTL_H */ |