Re: [PATCH 2/6] Provide __free(argv) for argv_split() users

From: Oleg Nesterov
Date: Sat Jan 04 2025 - 06:10:40 EST


On 01/04, Masami Hiramatsu (Google) wrote:
>
> +DEFINE_FREE(argv, char **, argv_free(_T))

This doesn't look right, I think we need

DEFINE_FREE(argv, char **, if (_T) argv_free(_T))

?

>From the next patch

@@ -73,24 +73,20 @@ int dyn_event_release(const char *raw_command, struct dyn_event_operations *type
struct dyn_event *pos, *n;
char *system = NULL, *event, *p;
int argc, ret = -ENOENT;
- char **argv;
+ char **argv __free(argv) = NULL;

argv = argv_split(GFP_KERNEL, raw_command, &argc);
if (!argv)
return -ENOMEM;

if argv_split() returns NULL, then __free_argv() will call argv_free(NULL) ?

Oleg.