diff for duplicates of <201009151428.32348.arnd@arndb.de> diff --git a/a/1.txt b/N1/1.txt index e823b4b..d533ccb 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -24,12 +24,15 @@ patch doesn't work, we might need to do it after all. > CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ > - -Wbitwise -Wno-return-void $(CF) > + -Wbitwise -Wno-return-void -DKBUILD_CHECKSRC $(CF) -> CFLAGS_MODULE > AFLAGS_MODULE > LDFLAGS_MODULE +> CFLAGS_MODULE = +> AFLAGS_MODULE = +> LDFLAGS_MODULE = + sparse already define __CHECKER__ itself, no need to define another symbol. > +#ifdef KBUILD_CHECKSRC > +#define rcu_dereference_sparse(p, space) \ -> + ((void)(((typeof(*p) space *)p) = p)) +> + ((void)(((typeof(*p) space *)p) == p)) > +#else /* #ifdef KBUILD_CHECKSRC */ > +#define rcu_dereference_sparse(p, space) > +#endif /* #else #ifdef KBUILD_CHECKSRC */ @@ -37,14 +40,14 @@ sparse already define __CHECKER__ itself, no need to define another symbol. Did you see a problem with my macro? #define rcu_dereference_sparse(p, space) \ - ((void)(((typeof(*p) space *)NULL) = ((typeof(p))NULL))) + ((void)(((typeof(*p) space *)NULL) == ((typeof(p))NULL))) I think this should warn in all the cases we want it to, but have no side-effects. > #define __rcu_access_pointer(p, space) \ > ({ \ > typeof(*p) *_________p1 = (typeof(*p)*__force )ACCESS_ONCE(p); \ -> - (void) (((typeof (*p) space *)p) = p); \ +> - (void) (((typeof (*p) space *)p) == p); \ > + rcu_dereference_sparse(p, space); \ > ((typeof(*p) __force __kernel *)(_________p1)); \ > }) @@ -52,7 +55,7 @@ I think this should warn in all the cases we want it to, but have no side-effect > ({ \ > typeof(*p) *_________p1 = (typeof(*p)*__force )ACCESS_ONCE(p); \ > rcu_lockdep_assert(c); \ -> - (void) (((typeof (*p) space *)p) = p); \ +> - (void) (((typeof (*p) space *)p) == p); \ > + rcu_dereference_sparse(p, space); \ > smp_read_barrier_depends(); \ > ((typeof(*p) __force __kernel *)(_________p1)); \ @@ -60,7 +63,7 @@ I think this should warn in all the cases we want it to, but have no side-effect > #define __rcu_dereference_protected(p, c, space) \ > ({ \ > rcu_lockdep_assert(c); \ -> - (void) (((typeof (*p) space *)p) = p); \ +> - (void) (((typeof (*p) space *)p) == p); \ > + rcu_dereference_sparse(p, space); \ > ((typeof(*p) __force __kernel *)(p)); \ > }) diff --git a/a/content_digest b/N1/content_digest index 86e13f1..0014d65 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -3,7 +3,7 @@ "ref\020100914003351.GA8300@linux.vnet.ibm.com\0" "From\0Arnd Bergmann <arnd@arndb.de>\0" "Subject\0Re: [PATCH] md: do not use ++ in rcu_dereference() argument\0" - "Date\0Wed, 15 Sep 2010 12:28:32 +0000\0" + "Date\0Wed, 15 Sep 2010 14:28:32 +0200\0" "To\0paulmck@linux.vnet.ibm.com\0" "Cc\0Kulikov Vasiliy <segooon@gmail.com>" kernel-janitors@vger.kernel.org @@ -39,12 +39,15 @@ "> CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \\\n" "> - -Wbitwise -Wno-return-void $(CF)\n" "> + -Wbitwise -Wno-return-void -DKBUILD_CHECKSRC $(CF)\n" - "> CFLAGS_MODULE > AFLAGS_MODULE > LDFLAGS_MODULE \n" + "> CFLAGS_MODULE =\n" + "> AFLAGS_MODULE =\n" + "> LDFLAGS_MODULE =\n" + "\n" "sparse already define __CHECKER__ itself, no need to define another symbol.\n" "\n" "> +#ifdef KBUILD_CHECKSRC\n" "> +#define rcu_dereference_sparse(p, space) \\\n" - "> + ((void)(((typeof(*p) space *)p) = p))\n" + "> + ((void)(((typeof(*p) space *)p) == p))\n" "> +#else /* #ifdef KBUILD_CHECKSRC */\n" "> +#define rcu_dereference_sparse(p, space)\n" "> +#endif /* #else #ifdef KBUILD_CHECKSRC */\n" @@ -52,14 +55,14 @@ "Did you see a problem with my macro?\n" "\n" "#define rcu_dereference_sparse(p, space) \\\n" - " ((void)(((typeof(*p) space *)NULL) = ((typeof(p))NULL)))\n" + " ((void)(((typeof(*p) space *)NULL) == ((typeof(p))NULL)))\n" "\n" "I think this should warn in all the cases we want it to, but have no side-effects.\n" "\n" "> #define __rcu_access_pointer(p, space) \\\n" "> ({ \\\n" "> typeof(*p) *_________p1 = (typeof(*p)*__force )ACCESS_ONCE(p); \\\n" - "> - (void) (((typeof (*p) space *)p) = p); \\\n" + "> - (void) (((typeof (*p) space *)p) == p); \\\n" "> + rcu_dereference_sparse(p, space); \\\n" "> ((typeof(*p) __force __kernel *)(_________p1)); \\\n" "> })\n" @@ -67,7 +70,7 @@ "> ({ \\\n" "> typeof(*p) *_________p1 = (typeof(*p)*__force )ACCESS_ONCE(p); \\\n" "> rcu_lockdep_assert(c); \\\n" - "> - (void) (((typeof (*p) space *)p) = p); \\\n" + "> - (void) (((typeof (*p) space *)p) == p); \\\n" "> + rcu_dereference_sparse(p, space); \\\n" "> smp_read_barrier_depends(); \\\n" "> ((typeof(*p) __force __kernel *)(_________p1)); \\\n" @@ -75,7 +78,7 @@ "> #define __rcu_dereference_protected(p, c, space) \\\n" "> ({ \\\n" "> rcu_lockdep_assert(c); \\\n" - "> - (void) (((typeof (*p) space *)p) = p); \\\n" + "> - (void) (((typeof (*p) space *)p) == p); \\\n" "> + rcu_dereference_sparse(p, space); \\\n" "> ((typeof(*p) __force __kernel *)(p)); \\\n" "> })\n" @@ -93,4 +96,4 @@ "\n" "\tArnd" -9a160613bb692a6591795c003fda02f4853b9b2f999b8c107c2524aa5003571e +35208da70c4d8ee820efcf329af5a25cc25c54f08459e7dbb75ec59d498236ed
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.