Message ID | 20190502163057.6603-1-natechancellor@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] kasan: Initialize tag to 0xff in __kasan_kmalloc | expand |
On Thu, May 2, 2019 at 6:31 PM Nathan Chancellor <natechancellor@gmail.com> wrote: > > When building with -Wuninitialized and CONFIG_KASAN_SW_TAGS unset, Clang > warns: > > mm/kasan/common.c:484:40: warning: variable 'tag' is uninitialized when > used here [-Wuninitialized] > kasan_unpoison_shadow(set_tag(object, tag), size); > ^~~ > > set_tag ignores tag in this configuration but clang doesn't realize it > at this point in its pipeline, as it points to arch_kasan_set_tag as > being the point where it is used, which will later be expanded to > (void *)(object) without a use of tag. Initialize tag to 0xff, as it > removes this warning and doesn't change the meaning of the code. > > Link: https://github.com/ClangBuiltLinux/linux/issues/465 > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> Reviewed-by: Andrey Konovalov <andreyknvl@google.com> Thanks! > --- > > v1 -> v2: > > * Initialize tag to 0xff at Andrey's request > > mm/kasan/common.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/kasan/common.c b/mm/kasan/common.c > index 36afcf64e016..242fdc01aaa9 100644 > --- a/mm/kasan/common.c > +++ b/mm/kasan/common.c > @@ -464,7 +464,7 @@ static void *__kasan_kmalloc(struct kmem_cache *cache, const void *object, > { > unsigned long redzone_start; > unsigned long redzone_end; > - u8 tag; > + u8 tag = 0xff; > > if (gfpflags_allow_blocking(flags)) > quarantine_reduce(); > -- > 2.21.0 > > -- > You received this message because you are subscribed to the Google Groups "kasan-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an email to kasan-dev+unsubscribe@googlegroups.com. > To post to this group, send email to kasan-dev@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/kasan-dev/20190502163057.6603-1-natechancellor%40gmail.com. > For more options, visit https://groups.google.com/d/optout.
On Thu, May 02, 2019 at 06:40:52PM +0200, Andrey Konovalov wrote: > On Thu, May 2, 2019 at 6:31 PM Nathan Chancellor > <natechancellor@gmail.com> wrote: > > > > When building with -Wuninitialized and CONFIG_KASAN_SW_TAGS unset, Clang > > warns: > > > > mm/kasan/common.c:484:40: warning: variable 'tag' is uninitialized when > > used here [-Wuninitialized] > > kasan_unpoison_shadow(set_tag(object, tag), size); > > ^~~ > > > > set_tag ignores tag in this configuration but clang doesn't realize it > > at this point in its pipeline, as it points to arch_kasan_set_tag as > > being the point where it is used, which will later be expanded to > > (void *)(object) without a use of tag. Initialize tag to 0xff, as it > > removes this warning and doesn't change the meaning of the code. > > > > Link: https://github.com/ClangBuiltLinux/linux/issues/465 > > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> > > Reviewed-by: Andrey Konovalov <andreyknvl@google.com> > > Thanks! > Thanks Andrey! Did anyone else have any other comments or can this be picked up? Cheers, Nathan
On 5/2/19 7:30 PM, Nathan Chancellor wrote: > When building with -Wuninitialized and CONFIG_KASAN_SW_TAGS unset, Clang > warns: > > mm/kasan/common.c:484:40: warning: variable 'tag' is uninitialized when > used here [-Wuninitialized] > kasan_unpoison_shadow(set_tag(object, tag), size); > ^~~ > > set_tag ignores tag in this configuration but clang doesn't realize it > at this point in its pipeline, as it points to arch_kasan_set_tag as > being the point where it is used, which will later be expanded to > (void *)(object) without a use of tag. Initialize tag to 0xff, as it > removes this warning and doesn't change the meaning of the code. > > Link: https://github.com/ClangBuiltLinux/linux/issues/465 > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> Fixes: 7f94ffbc4c6a ("kasan: add hooks implementation for tag-based mode") Cc: <stable@vger.kernel.org> Reviewed-by: Andrey Ryabinin <aryabinin@virtuozzo.com> > --- > > v1 -> v2: > > * Initialize tag to 0xff at Andrey's request > > mm/kasan/common.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/kasan/common.c b/mm/kasan/common.c > index 36afcf64e016..242fdc01aaa9 100644 > --- a/mm/kasan/common.c > +++ b/mm/kasan/common.c > @@ -464,7 +464,7 @@ static void *__kasan_kmalloc(struct kmem_cache *cache, const void *object, > { > unsigned long redzone_start; > unsigned long redzone_end; > - u8 tag; > + u8 tag = 0xff; > > if (gfpflags_allow_blocking(flags)) > quarantine_reduce(); >
diff --git a/mm/kasan/common.c b/mm/kasan/common.c index 36afcf64e016..242fdc01aaa9 100644 --- a/mm/kasan/common.c +++ b/mm/kasan/common.c @@ -464,7 +464,7 @@ static void *__kasan_kmalloc(struct kmem_cache *cache, const void *object, { unsigned long redzone_start; unsigned long redzone_end; - u8 tag; + u8 tag = 0xff; if (gfpflags_allow_blocking(flags)) quarantine_reduce();
When building with -Wuninitialized and CONFIG_KASAN_SW_TAGS unset, Clang warns: mm/kasan/common.c:484:40: warning: variable 'tag' is uninitialized when used here [-Wuninitialized] kasan_unpoison_shadow(set_tag(object, tag), size); ^~~ set_tag ignores tag in this configuration but clang doesn't realize it at this point in its pipeline, as it points to arch_kasan_set_tag as being the point where it is used, which will later be expanded to (void *)(object) without a use of tag. Initialize tag to 0xff, as it removes this warning and doesn't change the meaning of the code. Link: https://github.com/ClangBuiltLinux/linux/issues/465 Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> --- v1 -> v2: * Initialize tag to 0xff at Andrey's request mm/kasan/common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)