On Sun, Jan 04, 2026 at 06:41:15PM +0000, Andre Carvalho wrote:
> +static void process_resume_target(struct work_struct *work)
> +{
> +     struct netconsole_target *nt =
> +             container_of(work, struct netconsole_target, resume_wq);
> +     unsigned long flags;
> +
> +     mutex_lock(&dynamic_netconsole_mutex);

This ended up causing build failures in CI as it needs to be guarded by
ifdef for CONFIG_NETCONSOLE_DYNAMIC. Unfortunately, this was always set on my
local tests - will fix that as well.

Sorry for the noise in the CI. Will fix this in v10.

> @@ -1945,6 +2022,7 @@ static struct netconsole_target 
> *alloc_param_target(char *target_config,
>  /* Cleanup netpoll for given target (from boot/module param) and free it */
>  static void free_param_target(struct netconsole_target *nt)
>  {
> +     cancel_work_sync(&nt->resume_wq);
>       netpoll_cleanup(&nt->np);

Will also address the AI Review[1], which seems to indicate a potential 
use-after-free
when a dynamic target gets removes (and disabled) while resume_wq has some 
pending
work. I think this might be a true positive and I'll see if also canceling the 
work
on netconsole_target_release() makes sense.

[1] 
https://netdev-ai.bots.linux.dev/ai-review.html?id=ca5cba91-a1a6-4240-bf10-e4da9c5bc58a

-- 
Andre Carvalho

Reply via email to