Skip to content

Commit 45ba5b3

Browse files
ashkalrabp3tk0v
authored andcommitted
iommu/amd: Fix failure return from snp_lookup_rmpentry()
Commit f366a8d: ("iommu/amd: Clean up RMP entries for IOMMU pages during SNP shutdown") leads to the following Smatch static checker warning: drivers/iommu/amd/init.c:3820 iommu_page_make_shared() error: uninitialized symbol 'assigned'. Fix it. [ bp: Address the other error cases too. ] Fixes: f366a8d ("iommu/amd: Clean up RMP entries for IOMMU pages during SNP shutdown") Closes: https://lore.kernel.org/linux-iommu/1be69f6a-e7e1-45f9-9a74-b2550344f3fd@moroto.mountain Reported-by: Dan Carpenter <dan.carpenter@linaro.org> Signed-off-by: Ashish Kalra <ashish.kalra@amd.com> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Cc: Joerg Roedel <jroedel@suse.com> Link: https://lore.kernel.org/lkml/20240126041126.1927228-20-michael.roth@amd.com
1 parent 1c811d4 commit 45ba5b3

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

drivers/iommu/amd/init.c

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3813,23 +3813,28 @@ static int iommu_page_make_shared(void *page)
38133813
bool assigned;
38143814

38153815
ret = snp_lookup_rmpentry(pfn, &assigned, &level);
3816-
if (ret)
3817-
pr_warn("IOMMU PFN %lx RMP lookup failed, ret %d\n",
3818-
pfn, ret);
3816+
if (ret) {
3817+
pr_warn("IOMMU PFN %lx RMP lookup failed, ret %d\n", pfn, ret);
3818+
return ret;
3819+
}
38193820

3820-
if (!assigned)
3821-
pr_warn("IOMMU PFN %lx not assigned in RMP table\n",
3822-
pfn);
3821+
if (!assigned) {
3822+
pr_warn("IOMMU PFN %lx not assigned in RMP table\n", pfn);
3823+
return -EINVAL;
3824+
}
38233825

38243826
if (level > PG_LEVEL_4K) {
38253827
ret = psmash(pfn);
3826-
if (ret) {
3827-
pr_warn("IOMMU PFN %lx had a huge RMP entry, but attempted psmash failed, ret: %d, level: %d\n",
3828-
pfn, ret, level);
3829-
}
3828+
if (!ret)
3829+
goto done;
3830+
3831+
pr_warn("PSMASH failed for IOMMU PFN %lx huge RMP entry, ret: %d, level: %d\n",
3832+
pfn, ret, level);
3833+
return ret;
38303834
}
38313835
}
38323836

3837+
done:
38333838
return rmp_make_shared(pfn, PG_LEVEL_4K);
38343839
}
38353840

0 commit comments

Comments
 (0)