From: Sukadev Bhattiprolu Replace kernel_thread() call in drivers/base/firmware_class.c with kthread_create() since kernel_thread() is deprecated in drivers. Signed-off-by: Sukadev Bhattiprolu Cc: Cedric Le Goater Cc: Serge E. Hallyn Cc: Dave Hansen Cc: Manuel Estrada Sainz Acked-by: Marcel Holtmann Signed-off-by: Andrew Morton --- drivers/base/firmware_class.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff -puN drivers/base/firmware_class.c~kthread-drivers-base-firmware_classc drivers/base/firmware_class.c --- a/drivers/base/firmware_class.c~kthread-drivers-base-firmware_classc +++ a/drivers/base/firmware_class.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include "base.h" @@ -506,7 +507,6 @@ request_firmware_work_func(void *arg) WARN_ON(1); return 0; } - daemonize("%s/%s", "firmware", fw_work->name); ret = _request_firmware(&fw, fw_work->name, fw_work->device, fw_work->uevent); if (ret < 0) @@ -541,9 +541,9 @@ request_firmware_nowait( const char *name, struct device *device, void *context, void (*cont)(const struct firmware *fw, void *context)) { + struct task_struct *task; struct firmware_work *fw_work = kmalloc(sizeof (struct firmware_work), GFP_ATOMIC); - int ret; if (!fw_work) return -ENOMEM; @@ -561,14 +561,14 @@ request_firmware_nowait( .uevent = uevent, }; - ret = kernel_thread(request_firmware_work_func, fw_work, - CLONE_FS | CLONE_FILES); + task = kthread_run(request_firmware_work_func, fw_work, + "firmware/%s", name); - if (ret < 0) { + if (IS_ERR(task)) { fw_work->cont(NULL, fw_work->context); module_put(fw_work->module); kfree(fw_work); - return ret; + return PTR_ERR(task); } return 0; } _