Skip to contentSkip to conversation

perf test: Fix a leaked map reference in the arch dwarf unwind tests

PATCH Applied Chen Pei 4 participants 5 messages Sep 14 – Sep 22

Subsystems (2)
lore
Share & tools
lore

Chen Pei

author
#0 lore raw

PATCH 1/1 perf test: Fix a leaked map reference in the arch dwarf unwind tests

maps__find() has returned a reference to the map it finds since commit 42fd623b58db ("perf maps: Get map before returning in maps__find"), which updated arch/x86/tests/dwarf-unwind.c but missed the arm, arm64 and powerpc copies. Release the map after reading its end, as x86 does. All other callers of maps__find() already release what they get.

Fixes 42fd623b58db ("perf maps: Get map before returning in maps__find")
---
 tools/perf/arch/arm/tests/dwarf-unwind.c     | 1 +
 tools/perf/arch/arm64/tests/dwarf-unwind.c   | 1 +
 tools/perf/arch/powerpc/tests/dwarf-unwind.c | 1 +
 3 files changed, 3 insertions(+)
tools/perf/arch/arm/tests/dwarf-unwind.c +1 -0
index f421910e0709..d4707e9ffd2a 100644
@@ -34,6 +34,7 @@ static int sample_ustack(struct perf_sample *sample,
 	}
 
 	stack_size = map__end(map) - sp;
+	map__put(map);
 	stack_size = stack_size > STACK_SIZE ? STACK_SIZE : stack_size;
 
 	memcpy(buf, (void *) sp, stack_size);
tools/perf/arch/arm64/tests/dwarf-unwind.c +1 -0
index 440d00f0de14..fbc161a49369 100644
@@ -34,6 +34,7 @@ static int sample_ustack(struct perf_sample *sample,
 	}
 
 	stack_size = map__end(map) - sp;
+	map__put(map);
 	stack_size = stack_size > STACK_SIZE ? STACK_SIZE : stack_size;
 
 	memcpy(buf, (void *) sp, stack_size);
tools/perf/arch/powerpc/tests/dwarf-unwind.c +1 -0
index 66af884baa66..b4bade5d59e2 100644
@@ -34,6 +34,7 @@ static int sample_ustack(struct perf_sample *sample,
 	}
 
 	stack_size = map__end(map) - sp;
+	map__put(map);
 	stack_size = stack_size > STACK_SIZE ? STACK_SIZE : stack_size;
 
 	memcpy(buf, (void *) sp, stack_size);
Signature · 1 line
2.50.1
#1 lore raw
Sashiko has reviewed this patch and found no issues. It looks great!
Quoted 9 lines

maps__find() has returned a reference to the map it finds since commit 42fd623b58db ("perf maps: Get map before returning in maps__find"), which updated arch/x86/tests/dwarf-unwind.c but missed the arm, arm64 and powerpc copies. Release the map after reading its end, as x86 does. All other callers of maps__find() already release what they get.

Fixes 42fd623b58db ("perf maps: Get map before returning in maps__find")

Sashiko has reviewed this patch and found no issues. It looks great!

Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
reviewer Reviewed-by on v1 1/1
#2 lore raw
In reply to Chen Pei
Quoted 10 lines · Chen Pei

maps__find() has returned a reference to the map it finds since commit 42fd623b58db ("perf maps: Get map before returning in maps__find"), which updated arch/x86/tests/dwarf-unwind.c but missed the arm, arm64 and powerpc copies. Release the map after reading its end, as x86 does. All other callers of maps__find() already release what they get.

Fixes 42fd623b58db ("perf maps: Get map before returning in maps__find")

Thanks,
Ian

Quoted 45 lines
---
 tools/perf/arch/arm/tests/dwarf-unwind.c     | 1 +
 tools/perf/arch/arm64/tests/dwarf-unwind.c   | 1 +
 tools/perf/arch/powerpc/tests/dwarf-unwind.c | 1 +
 3 files changed, 3 insertions(+)
tools/perf/arch/arm/tests/dwarf-unwind.c +1 -0
index f421910e0709..d4707e9ffd2a 100644
@@ -34,6 +34,7 @@ static int sample_ustack(struct perf_sample *sample,
        }
 
        stack_size = map__end(map) - sp;
+       map__put(map);
        stack_size = stack_size > STACK_SIZE ? STACK_SIZE : stack_size;
 
        memcpy(buf, (void *) sp, stack_size);
tools/perf/arch/arm64/tests/dwarf-unwind.c +1 -0
index 440d00f0de14..fbc161a49369 100644
@@ -34,6 +34,7 @@ static int sample_ustack(struct perf_sample *sample,
        }
 
        stack_size = map__end(map) - sp;
+       map__put(map);
        stack_size = stack_size > STACK_SIZE ? STACK_SIZE : stack_size;
 
        memcpy(buf, (void *) sp, stack_size);
tools/perf/arch/powerpc/tests/dwarf-unwind.c +1 -1
index 66af884baa66..b4bade5d59e2 100644
@@ -34,6 +34,7 @@ static int sample_ustack(struct perf_sample *sample,
        }
 
        stack_size = map__end(map) - sp;
+       map__put(map);
        stack_size = stack_size > STACK_SIZE ? STACK_SIZE : stack_size;
 
        memcpy(buf, (void *) sp, stack_size);
--

2.50.1

maintainer Applied
#3 lore raw
Quoted 9 lines · Ian Rogers
Quoted 8 lines · Chen Pei

maps__find() has returned a reference to the map it finds since commit 42fd623b58db ("perf maps: Get map before returning in maps__find"), which updated arch/x86/tests/dwarf-unwind.c but missed the arm, arm64 and powerpc copies. Release the map after reading its end, as x86 does. All other callers of maps__find() already release what they get.

Quoted 4 lines
Quoted 2 lines
Fixes 42fd623b58db ("perf maps: Get map before returning in maps__find")

Thanks, applied to perf-tools-next, for v7.4.

- Arnaldo

maintainer Applied
#4 lore raw
In reply to Ian Rogers
Quoted 9 lines · Ian Rogers
Quoted 8 lines · Chen Pei

maps__find() has returned a reference to the map it finds since commit 42fd623b58db ("perf maps: Get map before returning in maps__find"), which updated arch/x86/tests/dwarf-unwind.c but missed the arm, arm64 and powerpc copies. Release the map after reading its end, as x86 does. All other callers of maps__find() already release what they get.

Quoted 4 lines
Quoted 2 lines
Fixes 42fd623b58db ("perf maps: Get map before returning in maps__find")

Thanks, applied to perf-tools-next, for v7.4.

- Arnaldo