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

Commit 82cd19cd authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'x86-fixes-for-linus' of...

Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86/microcode: Fix double vfree() and remove redundant pointer checks before vfree()
parents b52e2a6d 5cdd2de0
Loading
Loading
Loading
Loading
+5 −11
Original line number Diff line number Diff line
@@ -364,7 +364,6 @@ static enum ucode_state generic_load_microcode(int cpu, void *data, size_t size,

		/* For performance reasons, reuse mc area when possible */
		if (!mc || mc_size > curr_mc_size) {
			if (mc)
			vfree(mc);
			mc = vmalloc(mc_size);
			if (!mc)
@@ -374,12 +373,10 @@ static enum ucode_state generic_load_microcode(int cpu, void *data, size_t size,

		if (get_ucode_data(mc, ucode_ptr, mc_size) ||
		    microcode_sanity_check(mc) < 0) {
			vfree(mc);
			break;
		}

		if (get_matching_microcode(&uci->cpu_sig, mc, new_rev)) {
			if (new_mc)
			vfree(new_mc);
			new_rev = mc_header.rev;
			new_mc  = mc;
@@ -390,11 +387,9 @@ static enum ucode_state generic_load_microcode(int cpu, void *data, size_t size,
		leftover  -= mc_size;
	}

	if (mc)
	vfree(mc);

	if (leftover) {
		if (new_mc)
		vfree(new_mc);
		state = UCODE_ERROR;
		goto out;
@@ -405,7 +400,6 @@ static enum ucode_state generic_load_microcode(int cpu, void *data, size_t size,
		goto out;
	}

	if (uci->mc)
	vfree(uci->mc);
	uci->mc = (struct microcode_intel *)new_mc;