|SUCCESS| examples: Fix vm_power_manager scratch area to /run/dpdk/powermanager

dpdklab at iol.unh.edu dpdklab at iol.unh.edu
Thu May 28 23:21:38 CEST 2026


Test-Label: ai-code-review
Test-Status: SUCCESS
https://dpdk.org/patch/164542

_AI Code Review_

=== Patch Review: series.patch (via Claude) ===
Review date: 2026-05-28

I'll review this DPDK patch for compliance with coding standards and contribution guidelines.

commit e26274b281
Author: Sudheendra Sampath <giveback4fun at gmail.com>
Subject: [PATCH] examples: Fix vm_power_manager scratch area to /run/dpdk/powermanager

This patch changes the vm_power_manager socket path from /tmp/powermonitor/
to /run/dpdk/powermonitor/ and adds logic to create the directory hierarchy
if it doesn't exist.

> diff --git a/examples/vm_power_manager/channel_manager.c b/examples/vm_power_manager/channel_manager.c
> index b69449c61d..60d767ea98 100644
> --- a/examples/vm_power_manager/channel_manager.c
> +++ b/examples/vm_power_manager/channel_manager.c
> @@ -420,8 +420,33 @@ add_all_channels(const char *vm_name)
>  	if (d == NULL) {
>  		RTE_LOG(ERR, CHANNEL_MANAGER, "Error opening directory '%s': %s\n",
>  				CHANNEL_MGR_SOCKET_PATH, strerror(errno));
> -		return -1;
> +
> +		const char *run_dpdk = "/run/dpdk";
> +		struct stat path_stat;
> +		int ret;

Coding style: Variable declarations should appear at the top of the block,
not after an RTE_LOG() call. These should be moved before the opendir()
call that precedes the "if (d == NULL)" check.

> +
> +		if (stat(run_dpdk, &path_stat) != 0) {

Does this code have a TOCTOU race condition? The stat() check and
subsequent mkdir() are not atomic. If another process creates the directory
between these operations, does the code handle this correctly?

> +			ret = mkdir(run_dpdk, 0700);
> +			if (ret < 0 && errno != EEXIST) {
> +				RTE_LOG(ERR, CHANNEL_MANAGER, "Error creating '%s': %s",
> +						run_dpdk, strerror(errno));
> +				return -1;
> +			}
> +		}

Does this code correctly handle the case where stat() fails for reasons
other than ENOENT? If stat() fails due to permission issues, does the code
incorrectly attempt mkdir()?

> +
> +		/* Make sure /run/dpdk is a directory */
> +		if (!S_ISDIR(path_stat.st_mode)) {
> +			return -1;
> +		}

Does this code use uninitialized data? If stat() fails in the condition
above, path_stat is never populated, but this code still checks
path_stat.st_mode. Does this access uninitialized memory?

Also, this error case lacks an RTE_LOG() message. Should it log an error
before returning -1?

> +
> +		ret = mkdir(CHANNEL_MGR_SOCKET_PATH, 0700);
> +		if (ret < 0 && errno != EEXIST) {
> +			RTE_LOG(ERR, CHANNEL_MANAGER, "Error creating '%s': %s",
> +				CHANNEL_MGR_SOCKET_PATH, strerror(errno));
> +			return -1;
> +		}

Can this mkdir() fail if /run/dpdk exists but is not writable by the
current user? Should the code verify permissions on /run/dpdk before
attempting to create the subdirectory?

Also, if this mkdir() succeeds or EEXIST occurs, should the code then
attempt to opendir() again rather than continuing with d == NULL?

> +	}
> +
>  	while ((d != NULL) && (dir = readdir(d)) != NULL) {

Does the loop condition change properly handle the new code flow? After
the error recovery code, d is still NULL if opendir() originally failed.
Does the while loop correctly skip execution in this case?

[ ... ]


More information about the test-report mailing list