perf kmaps: Check kmaps to make code more robust
This patch add checks in places where map__kmap is used to get kmaps from struct kmap. Error messages are added at map__kmap to warn invalid accessing of kmap (for the case of !map->dso->kernel, kmap(map) does not exists at all). Also, introduces map__kmaps() to warn uninitialized kmaps. Reviewed-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Wang Nan <wangnan0@huawei.com> Cc: pi3orama@163.com Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Zefan Li <lizefan@huawei.com> Link: http://lkml.kernel.org/r/1428394966-131044-2-git-send-email-wangnan0@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:

committed by
Arnaldo Carvalho de Melo

parent
8ea92ceb74
commit
ba92732e98
@@ -778,3 +778,23 @@ struct map *maps__next(struct map *map)
|
||||
return rb_entry(next, struct map, rb_node);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct kmap *map__kmap(struct map *map)
|
||||
{
|
||||
if (!map->dso || !map->dso->kernel) {
|
||||
pr_err("Internal error: map__kmap with a non-kernel map\n");
|
||||
return NULL;
|
||||
}
|
||||
return (struct kmap *)(map + 1);
|
||||
}
|
||||
|
||||
struct map_groups *map__kmaps(struct map *map)
|
||||
{
|
||||
struct kmap *kmap = map__kmap(map);
|
||||
|
||||
if (!kmap || !kmap->kmaps) {
|
||||
pr_err("Internal error: map__kmaps with a non-kernel map\n");
|
||||
return NULL;
|
||||
}
|
||||
return kmap->kmaps;
|
||||
}
|
||||
|
Reference in New Issue
Block a user