]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iommu/amd: Fix sleeping in atomic context
authorVasant Hegde <vasant.hegde@amd.com>
Thu, 7 Mar 2024 05:27:38 +0000 (05:27 +0000)
committerJoerg Roedel <jroedel@suse.de>
Fri, 8 Mar 2024 07:58:24 +0000 (08:58 +0100)
Commit cf70873e3d01 ("iommu/amd: Refactor GCR3 table helper functions")
changed GFP flag we use for GCR3 table. Original plan was to move GCR3
table allocation outside spinlock. But this requires complete rework of
attach device path. Hence we didn't do it as part of SVA series. For now
revert the GFP flag to ATOMIC (same as original code).

Fixes: cf70873e3d01 ("iommu/amd: Refactor GCR3 table helper functions")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
Link: https://lore.kernel.org/r/20240307052738.116035-1-vasant.hegde@amd.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd/iommu.c

index f688443c2764f9fc18262bd5a86306fb58b328d2..d35c1b8c8e65ce5a9c6f6ae3aae555d91eb4d3d0 100644 (file)
@@ -1793,7 +1793,7 @@ static int setup_gcr3_table(struct gcr3_tbl_info *gcr3_info,
        /* Allocate per device domain ID */
        gcr3_info->domid = domain_id_alloc();
 
-       gcr3_info->gcr3_tbl = alloc_pgtable_page(nid, GFP_KERNEL);
+       gcr3_info->gcr3_tbl = alloc_pgtable_page(nid, GFP_ATOMIC);
        if (gcr3_info->gcr3_tbl == NULL) {
                domain_id_free(gcr3_info->domid);
                return -ENOMEM;