mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-23 01:31:30 +03:00
nvadsp: adspff: Handle kthread creation failure
kthread_create call may return ERR_PTR(-ENOMEM) or ERR_PTR(-EINTR) in case of memory allocation failure or if the newly created thread receives a fatal signal. Handle the conditions by returning and not attempting to wake up the thread. Bug 200688338 Change-Id: Ibde3a847202476f52fca38d145091c540ace19c4 Signed-off-by: Niranjan Dighe <ndighe@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2633986 (cherry picked from commit 4d382d925befd445cddfc10c556d7c06b980b920) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2729780 Reviewed-by: svcacv <svcacv@nvidia.com> Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com> Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com> Reviewed-by: Nitin Pai <npai@nvidia.com> GVS: Gerrit_Virtual_Submit Tested-by: Uday Gupta <udayg@nvidia.com>
This commit is contained in:
committed by
Laxman Dewangan
parent
e6c266d6bf
commit
4bcb44fbf9
@@ -663,6 +663,16 @@ int adspff_init(struct platform_device *pdev)
|
||||
return -1;
|
||||
}
|
||||
|
||||
adspff_kthread = kthread_create(adspff_kthread_fn,
|
||||
NULL, "adspp_kthread");
|
||||
if ((adspff_kthread == ERR_PTR(-ENOMEM)) ||
|
||||
(adspff_kthread == ERR_PTR(-EINTR))) {
|
||||
pr_err("adspff kthread_create failed, error = %s\n",
|
||||
(adspff_kthread == ERR_PTR(-ENOMEM)) ?
|
||||
"-ENOMEM" : "-EINTR");
|
||||
return -1;
|
||||
}
|
||||
|
||||
adspff = ADSPFF_SHARED_STATE(app_info->mem.shared);
|
||||
|
||||
ret = nvadsp_mbox_open(&rx_mbox, &adspff->mbox_id,
|
||||
@@ -684,10 +694,7 @@ int adspff_init(struct platform_device *pdev)
|
||||
INIT_LIST_HEAD(&adspff_kthread_msgq_head);
|
||||
INIT_LIST_HEAD(&file_list);
|
||||
|
||||
// kthread inIt
|
||||
init_waitqueue_head(&wait_queue);
|
||||
adspff_kthread = kthread_create(adspff_kthread_fn,
|
||||
NULL, "adspp_kthread");
|
||||
|
||||
#if KERNEL_VERSION(5, 9, 0) > LINUX_VERSION_CODE
|
||||
sched_setscheduler(adspff_kthread, SCHED_FIFO, ¶m);
|
||||
|
||||
Reference in New Issue
Block a user