Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 113fab13 authored by Matthieu CASTET's avatar Matthieu CASTET Committed by Linus Torvalds
Browse files

[PATCH] fix leaks in request_firmware_nowait



Wasn't checking return error and forgot to free in some case.

Signed-off-by: default avatarMatthieu CASTET <castet.matthieu@free.fr>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent ff6ed406
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -526,18 +526,23 @@ request_firmware_work_func(void *arg)
{
	struct firmware_work *fw_work = arg;
	const struct firmware *fw;
	int ret;
	if (!arg) {
		WARN_ON(1);
		return 0;
	}
	daemonize("%s/%s", "firmware", fw_work->name);
	_request_firmware(&fw, fw_work->name, fw_work->device,
	ret = _request_firmware(&fw, fw_work->name, fw_work->device,
		fw_work->hotplug);
	if (ret < 0)
		fw_work->cont(NULL, fw_work->context);
	else {
		fw_work->cont(fw, fw_work->context);
		release_firmware(fw);
	}
	module_put(fw_work->module);
	kfree(fw_work);
	return 0;
	return ret;
}

/**
@@ -586,6 +591,8 @@ request_firmware_nowait(

	if (ret < 0) {
		fw_work->cont(NULL, fw_work->context);
		module_put(fw_work->module);
		kfree(fw_work);
		return ret;
	}
	return 0;