* [PATCH v3 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get
@ 2020-11-13 3:11 Hanjun Guo
2020-11-13 3:11 ` [PATCH v3 2/2] drm/amdkfd: Put ACPI table after using it Hanjun Guo
2020-11-13 18:52 ` [PATCH v3 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Felix Kuehling
0 siblings, 2 replies; 3+ messages in thread
From: Hanjun Guo @ 2020-11-13 3:11 UTC (permalink / raw)
To: Felix Kuehling; +Cc: linux-acpi, linux-kernel, Hanjun Guo
If the ignore_crat is set to non-zero value, it's no point getting
the CRAT table, so just move the ignore_crat check before we get the
CRAT table.
Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
---
drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
index 3de5e14..c23e571 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
@@ -780,6 +780,11 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
*crat_image = NULL;
+ if (kfd_ignore_crat()) {
+ pr_info("CRAT table disabled by module option\n");
+ return -ENODATA;
+ }
+
/* Fetch the CRAT table from ACPI */
status = acpi_get_table(CRAT_SIGNATURE, 0, &crat_table);
if (status == AE_NOT_FOUND) {
@@ -792,11 +797,6 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
return -EINVAL;
}
- if (kfd_ignore_crat()) {
- pr_info("CRAT table disabled by module option\n");
- return -ENODATA;
- }
-
pcrat_image = kvmalloc(crat_table->length, GFP_KERNEL);
if (!pcrat_image)
return -ENOMEM;
--
1.7.12.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v3 2/2] drm/amdkfd: Put ACPI table after using it
2020-11-13 3:11 [PATCH v3 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Hanjun Guo
@ 2020-11-13 3:11 ` Hanjun Guo
2020-11-13 18:52 ` [PATCH v3 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Felix Kuehling
1 sibling, 0 replies; 3+ messages in thread
From: Hanjun Guo @ 2020-11-13 3:11 UTC (permalink / raw)
To: Felix Kuehling; +Cc: linux-acpi, linux-kernel, Hanjun Guo
The acpi_get_table() should be coupled with acpi_put_table() if
the mapped table is not used at runtime to release the table
mapping which can prevent the memory leak.
In kfd_create_crat_image_acpi(), crat_table is copied to pcrat_image,
and in kfd_create_vcrat_image_cpu(), the acpi_table is only used to
get the OEM information, so those two table mappings need to be released
after using it.
Fixes: 174de876d6d0 ("drm/amdkfd: Group up CRAT related functions")
Fixes: 520b8fb755cc ("drm/amdkfd: Add topology support for CPUs")
Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
---
drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
index c23e571..0dc8de0 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
@@ -774,6 +774,7 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
struct acpi_table_header *crat_table;
acpi_status status;
void *pcrat_image;
+ int rc = 0;
if (!crat_image)
return -EINVAL;
@@ -798,14 +799,17 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
}
pcrat_image = kvmalloc(crat_table->length, GFP_KERNEL);
- if (!pcrat_image)
- return -ENOMEM;
+ if (!pcrat_image) {
+ rc = -ENOMEM;
+ goto out;
+ }
memcpy(pcrat_image, crat_table, crat_table->length);
*crat_image = pcrat_image;
*size = crat_table->length;
-
- return 0;
+out:
+ acpi_put_table(crat_table);
+ return rc;
}
/* Memory required to create Virtual CRAT.
@@ -988,6 +992,7 @@ static int kfd_create_vcrat_image_cpu(void *pcrat_image, size_t *size)
CRAT_OEMID_LENGTH);
memcpy(crat_table->oem_table_id, acpi_table->oem_table_id,
CRAT_OEMTABLEID_LENGTH);
+ acpi_put_table(acpi_table);
}
crat_table->total_entries = 0;
crat_table->num_domains = 0;
--
1.7.12.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v3 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get
2020-11-13 3:11 [PATCH v3 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Hanjun Guo
2020-11-13 3:11 ` [PATCH v3 2/2] drm/amdkfd: Put ACPI table after using it Hanjun Guo
@ 2020-11-13 18:52 ` Felix Kuehling
1 sibling, 0 replies; 3+ messages in thread
From: Felix Kuehling @ 2020-11-13 18:52 UTC (permalink / raw)
To: Hanjun Guo; +Cc: linux-acpi, linux-kernel
Am 2020-11-12 um 10:11 p.m. schrieb Hanjun Guo:
> If the ignore_crat is set to non-zero value, it's no point getting
> the CRAT table, so just move the ignore_crat check before we get the
> CRAT table.
>
> Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
Thank you! I applied the patches.
Regards,
Felix
> ---
> drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
> index 3de5e14..c23e571 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
> @@ -780,6 +780,11 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
>
> *crat_image = NULL;
>
> + if (kfd_ignore_crat()) {
> + pr_info("CRAT table disabled by module option\n");
> + return -ENODATA;
> + }
> +
> /* Fetch the CRAT table from ACPI */
> status = acpi_get_table(CRAT_SIGNATURE, 0, &crat_table);
> if (status == AE_NOT_FOUND) {
> @@ -792,11 +797,6 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
> return -EINVAL;
> }
>
> - if (kfd_ignore_crat()) {
> - pr_info("CRAT table disabled by module option\n");
> - return -ENODATA;
> - }
> -
> pcrat_image = kvmalloc(crat_table->length, GFP_KERNEL);
> if (!pcrat_image)
> return -ENOMEM;
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-11-13 18:52 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-11-13 3:11 [PATCH v3 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Hanjun Guo
2020-11-13 3:11 ` [PATCH v3 2/2] drm/amdkfd: Put ACPI table after using it Hanjun Guo
2020-11-13 18:52 ` [PATCH v3 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Felix Kuehling
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox