module_put(fw_work->module); kfree(fw_work);
request_firmware_nowait(	struct module *module, int hotplug,	const char *name, struct device *device, void *context,	void (*cont)(const struct firmware *fw, void *context)){	struct firmware_work *fw_work = kmalloc(sizeof (struct firmware_work),						GFP_ATOMIC);	int ret;	if (!fw_work)		return -ENOMEM;	if (!try_module_get(module)) {		kfree(fw_work);		return -EFAULT;	}	*fw_work = (struct firmware_work) {		.module = module,		.name = name,		.device = device,		.context = context,		.cont = cont,		.hotplug = hotplug,	};	ret = kernel_thread(request_firmware_work_func, fw_work,			    CLONE_FS | CLONE_FILES);	if (ret < 0) {		fw_work->cont(NULL, fw_work->context);		return ret;	}	return 0;}