Messages in this thread Patch in this message | | | Date | Sat, 27 Nov 2021 16:20:28 -0800 | From | Andrew Morton <> | Subject | Re: [PATCH] kmemleak: fix kmemleak false positive report with HW tag-based kasan enable |
| |
On Thu, 25 Nov 2021 17:13:36 +0100 Andrey Konovalov <andreyknvl@gmail.com> wrote:
> > > kmemleak_object *object) > > > static struct kmemleak_object *lookup_object(unsigned long ptr, int > > > alias) > > > { > > > struct rb_node *rb = object_tree_root.rb_node; > > > + unsigned long untagged_ptr = (unsigned > > > long)kasan_reset_tag((void *)ptr); > > > > > > while (rb) { > > > struct kmemleak_object *object = > > > rb_entry(rb, struct kmemleak_object, rb_node); > > > - if (ptr < object->pointer) > > > + unsigned long untagged_objp; > > > + > > > + untagged_objp = (unsigned long)kasan_reset_tag((void > > > *)object->pointer); > > The two lines above can be squashed together.
That would make a too-long line even longer. In fact I think it's better to go the other way:
--- a/mm/kmemleak.c~kmemleak-fix-kmemleak-false-positive-report-with-hw-tag-based-kasan-enable-fix +++ a/mm/kmemleak.c @@ -384,10 +384,10 @@ static struct kmemleak_object *lookup_ob unsigned long untagged_ptr = (unsigned long)kasan_reset_tag((void *)ptr); while (rb) { - struct kmemleak_object *object = - rb_entry(rb, struct kmemleak_object, rb_node); + struct kmemleak_object *object; unsigned long untagged_objp; + object = rb_entry(rb, struct kmemleak_object, rb_node); untagged_objp = (unsigned long)kasan_reset_tag((void *)object->pointer); if (untagged_ptr < untagged_objp) _
| |