hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/tools/testing/selftests/resctrl/cache.c
....@@ -89,21 +89,19 @@
8989 static int get_llc_perf(unsigned long *llc_perf_miss)
9090 {
9191 __u64 total_misses;
92
+ int ret;
9293
9394 /* Stop counters after one span to get miss rate */
9495
9596 ioctl(fd_lm, PERF_EVENT_IOC_DISABLE, 0);
9697
97
- if (read(fd_lm, &rf_cqm, sizeof(struct read_format)) == -1) {
98
+ ret = read(fd_lm, &rf_cqm, sizeof(struct read_format));
99
+ if (ret == -1) {
98100 perror("Could not get llc misses through perf");
99
-
100101 return -1;
101102 }
102103
103104 total_misses = rf_cqm.values[0].value;
104
-
105
- close(fd_lm);
106
-
107105 *llc_perf_miss = total_misses;
108106
109107 return 0;
....@@ -256,17 +254,23 @@
256254 memflush, operation, resctrl_val)) {
257255 fprintf(stderr, "Error-running fill buffer\n");
258256 ret = -1;
259
- break;
257
+ goto pe_close;
260258 }
261259
262260 sleep(1);
263261 ret = measure_cache_vals(param, bm_pid);
264262 if (ret)
265
- break;
263
+ goto pe_close;
264
+
265
+ close(fd_lm);
266266 } else {
267267 break;
268268 }
269269 }
270270
271271 return ret;
272
+
273
+pe_close:
274
+ close(fd_lm);
275
+ return ret;
272276 }