linux-sparse.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* sparse: ioctl defines and "error: bad integer constant expression"
@ 2014-03-15 11:59 Hans Verkuil
  2014-03-31  8:06 ` Hans Verkuil
  0 siblings, 1 reply; 6+ messages in thread
From: Hans Verkuil @ 2014-03-15 11:59 UTC (permalink / raw)
  To: linux-sparse; +Cc: Linux Media Mailing List

Hi!

Here is another sparse error that I get when running sparse over
drivers/media/v4l2-core/v4l2-ioctl.c:

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:

#define _IOC_TYPECHECK(t) (sizeof(t))

then all is well with the world.

I can patch v4l2-ioctl.c to redefine _IOC_TYPECHECK if __CHECKER__ is defined, but
shouldn't sparse understand this instead? There was a similar situation with
ARRAY_SIZE in the past that sparse now understands.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-04-03 19:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-15 11:59 sparse: ioctl defines and "error: bad integer constant expression" Hans Verkuil
2014-03-31  8:06 ` Hans Verkuil
2014-03-31 17:22   ` Linus Torvalds
2014-04-01 16:48     ` Christopher Li
2014-04-01 17:06       ` Hans Verkuil
2014-04-03 19:12         ` Christopher Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).