[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