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-e...