@@ -1189,23 +1189,19 @@ static int __cmd_top(struct perf_top *top)
1189
1189
pthread_t thread , thread_process ;
1190
1190
int ret ;
1191
1191
1192
- top -> session = perf_session__new (NULL , false, NULL );
1193
- if (top -> session == NULL )
1194
- return -1 ;
1195
-
1196
1192
if (!top -> annotation_opts .objdump_path ) {
1197
1193
ret = perf_env__lookup_objdump (& top -> session -> header .env ,
1198
1194
& top -> annotation_opts .objdump_path );
1199
1195
if (ret )
1200
- goto out_delete ;
1196
+ return ret ;
1201
1197
}
1202
1198
1203
1199
ret = callchain_param__setup_sample_type (& callchain_param );
1204
1200
if (ret )
1205
- goto out_delete ;
1201
+ return ret ;
1206
1202
1207
1203
if (perf_session__register_idle_thread (top -> session ) < 0 )
1208
- goto out_delete ;
1204
+ return ret ;
1209
1205
1210
1206
if (top -> nr_threads_synthesize > 1 )
1211
1207
perf_set_multithreaded ();
@@ -1227,13 +1223,18 @@ static int __cmd_top(struct perf_top *top)
1227
1223
1228
1224
if (perf_hpp_list .socket ) {
1229
1225
ret = perf_env__read_cpu_topology_map (& perf_env );
1230
- if (ret < 0 )
1231
- goto out_err_cpu_topo ;
1226
+ if (ret < 0 ) {
1227
+ char errbuf [BUFSIZ ];
1228
+ const char * err = str_error_r (- ret , errbuf , sizeof (errbuf ));
1229
+
1230
+ ui__error ("Could not read the CPU topology map: %s\n" , err );
1231
+ return ret ;
1232
+ }
1232
1233
}
1233
1234
1234
1235
ret = perf_top__start_counters (top );
1235
1236
if (ret )
1236
- goto out_delete ;
1237
+ return ret ;
1237
1238
1238
1239
top -> session -> evlist = top -> evlist ;
1239
1240
perf_session__set_id_hdr_size (top -> session );
@@ -1252,7 +1253,7 @@ static int __cmd_top(struct perf_top *top)
1252
1253
ret = -1 ;
1253
1254
if (pthread_create (& thread_process , NULL , process_thread , top )) {
1254
1255
ui__error ("Could not create process thread.\n" );
1255
- goto out_delete ;
1256
+ return ret ;
1256
1257
}
1257
1258
1258
1259
if (pthread_create (& thread , NULL , (use_browser > 0 ? display_thread_tui :
@@ -1296,19 +1297,7 @@ static int __cmd_top(struct perf_top *top)
1296
1297
out_join_thread :
1297
1298
pthread_cond_signal (& top -> qe .cond );
1298
1299
pthread_join (thread_process , NULL );
1299
- out_delete :
1300
- perf_session__delete (top -> session );
1301
- top -> session = NULL ;
1302
-
1303
1300
return ret ;
1304
-
1305
- out_err_cpu_topo : {
1306
- char errbuf [BUFSIZ ];
1307
- const char * err = str_error_r (- ret , errbuf , sizeof (errbuf ));
1308
-
1309
- ui__error ("Could not read the CPU topology map: %s\n" , err );
1310
- goto out_delete ;
1311
- }
1312
1301
}
1313
1302
1314
1303
static int
@@ -1639,10 +1628,17 @@ int cmd_top(int argc, const char **argv)
1639
1628
signal (SIGWINCH , winch_sig );
1640
1629
}
1641
1630
1631
+ top .session = perf_session__new (NULL , false, NULL );
1632
+ if (top .session == NULL ) {
1633
+ status = -1 ;
1634
+ goto out_delete_evlist ;
1635
+ }
1636
+
1642
1637
status = __cmd_top (& top );
1643
1638
1644
1639
out_delete_evlist :
1645
1640
perf_evlist__delete (top .evlist );
1641
+ perf_session__delete (top .session );
1646
1642
1647
1643
return status ;
1648
1644
}
0 commit comments