Skip to content

Commit 0cd1a02

Browse files
committed
mm/slub: move struct track init out of set_track()
set_track() either zeroes out the struct track or fills it, depending on the addr parameter. This is unnecessary as there's only one place that calls it for the initialization - init_tracking(). We can simply do the zeroing there, with a single memset() that covers both TRACK_ALLOC and TRACK_FREE as they are adjacent. Signed-off-by: Vlastimil Babka <vbabka@suse.cz> Reviewed-and-tested-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Acked-by: David Rientjes <rientjes@google.com>
1 parent a5f1783 commit 0cd1a02

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

mm/slub.c

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -729,34 +729,32 @@ static void set_track(struct kmem_cache *s, void *object,
729729
{
730730
struct track *p = get_track(s, object, alloc);
731731

732-
if (addr) {
733732
#ifdef CONFIG_STACKTRACE
734-
unsigned int nr_entries;
733+
unsigned int nr_entries;
735734

736-
metadata_access_enable();
737-
nr_entries = stack_trace_save(kasan_reset_tag(p->addrs),
738-
TRACK_ADDRS_COUNT, 3);
739-
metadata_access_disable();
735+
metadata_access_enable();
736+
nr_entries = stack_trace_save(kasan_reset_tag(p->addrs),
737+
TRACK_ADDRS_COUNT, 3);
738+
metadata_access_disable();
740739

741-
if (nr_entries < TRACK_ADDRS_COUNT)
742-
p->addrs[nr_entries] = 0;
740+
if (nr_entries < TRACK_ADDRS_COUNT)
741+
p->addrs[nr_entries] = 0;
743742
#endif
744-
p->addr = addr;
745-
p->cpu = smp_processor_id();
746-
p->pid = current->pid;
747-
p->when = jiffies;
748-
} else {
749-
memset(p, 0, sizeof(struct track));
750-
}
743+
p->addr = addr;
744+
p->cpu = smp_processor_id();
745+
p->pid = current->pid;
746+
p->when = jiffies;
751747
}
752748

753749
static void init_tracking(struct kmem_cache *s, void *object)
754750
{
751+
struct track *p;
752+
755753
if (!(s->flags & SLAB_STORE_USER))
756754
return;
757755

758-
set_track(s, object, TRACK_FREE, 0UL);
759-
set_track(s, object, TRACK_ALLOC, 0UL);
756+
p = get_track(s, object, TRACK_ALLOC);
757+
memset(p, 0, 2*sizeof(struct track));
760758
}
761759

762760
static void print_track(const char *s, struct track *t, unsigned long pr_time)

0 commit comments

Comments
 (0)