diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index fe4aadc9630f5a9db93dc38ae907273c70d4a378..12f8c868fcd7dda57da90918321af4cbb4c70fbd 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -384,11 +384,8 @@ resolve_symbol(struct thread *thread, struct map **mapp, u64 *ipp)
 		 * the "[vdso]" dso, but for now lets use the old
 		 * trick of looking in the whole kernel symbol list.
 		 */
-		if ((long long)ip < 0) {
-			map = kernel_map;
-			if (mapp)
-				*mapp = map;
-		}
+		if ((long long)ip < 0)
+			return kernel_maps__find_symbol(ip, mapp);
 	}
 	dump_printf(" ...... dso: %s\n",
 		    map ? map->dso->long_name : "<not found>");