Module Name: src Committed By: christos Date: Sat May 9 18:49:36 UTC 2015
Modified Files: src/sys/lib/libkern: libkern.h Log Message: tricks with sizeof() make coverity complain. To generate a diff of this commit: cvs rdiff -u -r1.118 -r1.119 src/sys/lib/libkern/libkern.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/lib/libkern/libkern.h diff -u src/sys/lib/libkern/libkern.h:1.118 src/sys/lib/libkern/libkern.h:1.119 --- src/sys/lib/libkern/libkern.h:1.118 Mon Apr 20 11:22:17 2015 +++ src/sys/lib/libkern/libkern.h Sat May 9 14:49:36 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: libkern.h,v 1.118 2015/04/20 15:22:17 riastradh Exp $ */ +/* $NetBSD: libkern.h,v 1.119 2015/05/09 18:49:36 christos Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -329,12 +329,19 @@ tolower(int ch) * * The 0*sizeof((PTR) - ...) causes the compiler to warn if the type of * *fp does not match the type of struct bar::b_foo. + * We skip the validation for coverity runs to avoid warnings. */ +#ifdef __COVERITY__ +#define __validate_container_of(PTR, TYPE, FIELD) 0 +#else +#define __validate_container_of(PTR, TYPE, FIELD) \ + (0 * sizeof((PTR) - &((TYPE *)(((char *)(PTR)) - \ + offsetof(TYPE, FIELD)))->FIELD)) +#endif + #define container_of(PTR, TYPE, FIELD) \ - ((TYPE *)(((char *)(PTR)) - offsetof(TYPE, FIELD) + \ - 0*sizeof((PTR) - \ - &((TYPE *)(((char *)(PTR)) - \ - offsetof(TYPE, FIELD)))->FIELD))) + ((TYPE *)(((char *)(PTR)) - offsetof(TYPE, FIELD)) \ + + __validate_container_of(PTR, TYPE, FIELD)) #define MTPRNG_RLEN 624 struct mtprng_state {