Re: [syzbot] [media?] INFO: task hung in cec_claim_log_addrs

From: Hillf Danton
Date: Wed Feb 21 2024 - 07:30:12 EST


On Tue, 20 Feb 2024 22:13:24 -0800
> HEAD commit: 83d49ede4b18 Merge branch 'for-next/core' into for-kernelci
> git tree: git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=11ddc734180000

#syz test https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci

--- x/drivers/media/cec/core/cec-adap.c
+++ y/drivers/media/cec/core/cec-adap.c
@@ -1575,7 +1575,6 @@ unconfigure:
cec_adap_unconfigure(adap);
adap->is_configuring = false;
adap->must_reconfigure = false;
- adap->kthread_config = NULL;
complete(&adap->config_completion);
mutex_unlock(&adap->lock);
return 0;
@@ -1592,6 +1591,8 @@ static void cec_claim_log_addrs(struct c
if (WARN_ON(adap->is_configuring || adap->is_configured))
return;

+ if (adap->kthread_config)
+ return;
init_completion(&adap->config_completion);

/* Ready to kick off the thread */
@@ -1605,6 +1606,7 @@ static void cec_claim_log_addrs(struct c
mutex_unlock(&adap->lock);
wait_for_completion(&adap->config_completion);
mutex_lock(&adap->lock);
+ adap->kthread_config = NULL;
}
}

--