[PATCH v2 1/6] selftests/resctrl: Introduced linked list management for IMC counters
wuyifan
wuyifan50 at huawei.com
Wed May 6 00:17:52 PDT 2026
Hi Reinette,
On 4/23/2026 12:02 AM, Reinette Chatre wrote:
> Hi Yifan,
>
> On 4/10/26 2:33 AM, Yifan Wu wrote:
>> @@ -113,6 +115,7 @@ static int parse_imc_read_bw_events(char *imc_dir, unsigned int type,
>> unsigned int *count)
>> {
>> char imc_events_dir[PATH_MAX], imc_counter_cfg[PATH_MAX];
>> + struct imc_counter_config *imc_counter;
>> unsigned int orig_count = *count;
>> char cas_count_cfg[1024];
>> struct dirent *ep;
>> @@ -167,11 +170,17 @@ static int parse_imc_read_bw_events(char *imc_dir, unsigned int type,
>> ksft_print_msg("Maximum iMC count exceeded\n");
>> goto out_close;
>> }
>> + imc_counter = calloc(1, sizeof(*imc_counter));
>> + if (!imc_counter) {
>> + ksft_perror("Unable to allocate memory for iMC counters\n");
>> + goto out_close;
>> + }
>>
>> imc_counters_config[*count].type = type;
>> get_read_event_and_umask(cas_count_cfg, *count);
>> /* Do not fail after incrementing *count. */
>> *count += 1;
>> + list_add(&imc_counter->entry, &imc_counters_list);
>> }
>> if (*count == orig_count) {
>> ksft_print_msg("Unable to find events in %s\n", imc_events_dir);
> Should cleanup_read_mem_bw_imc() be called on error exit path?
Thank you for your suggestion. When parse_imc_read_bw_events() exits with an
error, the linked list imc_counters_list will be cleaned up in
test_cleanup().
main()
└── run_single_test()
├── mbm_run_test()
│ └── resctrl_val()
│ └── mbm_init()
│ └── initialize_read_mem_bw_imc()
│ └── enumerate_imcs()
│ └── read_from_imc_dir()
│ └── parse_imc_read_bw_events()
│ └── calloc()
└── test_cleanup()
└── mbm_test_cleanup()
└── cleanup_read_mem_bw_imc()
Calling cleanup_read_mem_bw_imc() in the error exit path may be intended
to prevent resource leaks. However, this results in the function being
called
repeatedly in both the error exit branch and test_cleanup().
Is there any specific intention behind calling it in
parse_imc_read_bw_events()?
Or should the cleanup be uniformly handled in test_cleanup()?
Yifan
More information about the linux-arm-kernel
mailing list