mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +00:00
![Hans Verkuil](/assets/img/avatar_default.png)
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>
17 lines
467 B
C
17 lines
467 B
C
#ifndef _ASM_GENERIC_IOCTL_H
|
|
#define _ASM_GENERIC_IOCTL_H
|
|
|
|
#include <uapi/asm-generic/ioctl.h>
|
|
|
|
#ifdef __CHECKER__
|
|
#define _IOC_TYPECHECK(t) (sizeof(t))
|
|
#else
|
|
/* 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)
|
|
#endif
|
|
|
|
#endif /* _ASM_GENERIC_IOCTL_H */
|