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>
This commit is contained in:
Родитель
a5f1783be2
Коммит
0cd1a02901
32
mm/slub.c
32
mm/slub.c
|
@ -729,34 +729,32 @@ static void set_track(struct kmem_cache *s, void *object,
|
|||
{
|
||||
struct track *p = get_track(s, object, alloc);
|
||||
|
||||
if (addr) {
|
||||
#ifdef CONFIG_STACKTRACE
|
||||
unsigned int nr_entries;
|
||||
unsigned int nr_entries;
|
||||
|
||||
metadata_access_enable();
|
||||
nr_entries = stack_trace_save(kasan_reset_tag(p->addrs),
|
||||
TRACK_ADDRS_COUNT, 3);
|
||||
metadata_access_disable();
|
||||
metadata_access_enable();
|
||||
nr_entries = stack_trace_save(kasan_reset_tag(p->addrs),
|
||||
TRACK_ADDRS_COUNT, 3);
|
||||
metadata_access_disable();
|
||||
|
||||
if (nr_entries < TRACK_ADDRS_COUNT)
|
||||
p->addrs[nr_entries] = 0;
|
||||
if (nr_entries < TRACK_ADDRS_COUNT)
|
||||
p->addrs[nr_entries] = 0;
|
||||
#endif
|
||||
p->addr = addr;
|
||||
p->cpu = smp_processor_id();
|
||||
p->pid = current->pid;
|
||||
p->when = jiffies;
|
||||
} else {
|
||||
memset(p, 0, sizeof(struct track));
|
||||
}
|
||||
p->addr = addr;
|
||||
p->cpu = smp_processor_id();
|
||||
p->pid = current->pid;
|
||||
p->when = jiffies;
|
||||
}
|
||||
|
||||
static void init_tracking(struct kmem_cache *s, void *object)
|
||||
{
|
||||
struct track *p;
|
||||
|
||||
if (!(s->flags & SLAB_STORE_USER))
|
||||
return;
|
||||
|
||||
set_track(s, object, TRACK_FREE, 0UL);
|
||||
set_track(s, object, TRACK_ALLOC, 0UL);
|
||||
p = get_track(s, object, TRACK_ALLOC);
|
||||
memset(p, 0, 2*sizeof(struct track));
|
||||
}
|
||||
|
||||
static void print_track(const char *s, struct track *t, unsigned long pr_time)
|
||||
|
|
Загрузка…
Ссылка в новой задаче