Commit 73958f22 authored by Jithu Joseph's avatar Jithu Joseph Committed by Aichun Shi
Browse files

platform/x86/intel/ifs: Call release_firmware() when handling errors.

stable inclusion
from stable-v6.7.3
commit e8931ebb0143dc4a3ad302be6f963ae375548bc0
category: bugfix
bugzilla: https://gitee.com/openeuler/intel-kernel/issues/I92GPP
CVE: N/A
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e8931ebb0143dc4a3ad302be6f963ae375548bc0



-------------------------------------

Intel-SIG: commit e8931ebb0143 ("platform/x86/intel/ifs: Call release_firmware() when handling errors.")
Backport to fix IFS SAF for GNR & SRF

-------------------------------------

[ Upstream commit 8c898ec07a2fc1d4694e81097a48e94a3816308d ]

Missing release_firmware() due to error handling blocked any future image
loading.

Fix the return code and release_fiwmare() to release the bad image.

Fixes: 25a76dbb36dd ("platform/x86/intel/ifs: Validate image size")
Reported-by: default avatarPengfei Xu <pengfei.xu@intel.com>
Signed-off-by: default avatarJithu Joseph <jithu.joseph@intel.com>
Signed-off-by: default avatarAshok Raj <ashok.raj@intel.com>
Tested-by: default avatarPengfei Xu <pengfei.xu@intel.com>
Reviewed-by: default avatarTony Luck <tony.luck@intel.com>
Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20240125082254.424859-2-ashok.raj@intel.com


Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarAichun Shi <aichun.shi@intel.com>
parent 0fb7f4fc
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -399,7 +399,8 @@ int ifs_load_firmware(struct device *dev)
	if (fw->size != expected_size) {
		dev_err(dev, "File size mismatch (expected %u, actual %zu). Corrupted IFS image.\n",
			expected_size, fw->size);
		return -EINVAL;
		ret = -EINVAL;
		goto release;
	}

	ret = image_sanity_check(dev, (struct microcode_header_intel *)fw->data);