kasprintf() returns a pointer to dynamically allocated memory
which can be NULL upon failure. Ensure the allocation was successful
by checking the pointer validity.
Signed-off-by: Kunwu Chan <[email protected]>
---
drivers/gpu/drm/msm/adreno/adreno_gpu.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
index 074fb498706f..7e79ead4fe00 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
@@ -144,6 +144,10 @@ static int zap_shader_load_mdt(struct msm_gpu *gpu, const char *fwname,
char *newname;
newname = kasprintf(GFP_KERNEL, "qcom/%s", fwname);
+ if (!newname) {
+ ret = -ENOMEM;
+ goto out;
+ }
ret = qcom_mdt_load(dev, fw, newname, pasid,
mem_region, mem_phys, mem_size, NULL);
--
2.39.2
> kasprintf() returns a pointer to dynamically allocated memory
> which can be NULL upon failure. Ensure the allocation was successful
> by checking the pointer validity.
…
> +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> @@ -144,6 +144,10 @@ static int zap_shader_load_mdt(struct msm_gpu *gpu, const char *fwname,
> char *newname;
>
> newname = kasprintf(GFP_KERNEL, "qcom/%s", fwname);
> + if (!newname) {
> + ret = -ENOMEM;
> + goto out;
> + }
…
How do you think about to avoid the repetition of the pointer check
for the variable “mem_region”?
Can the usage of other labels become more appropriate?
Regards,
Markus
On 2024/1/18 02:50, Markus Elfring wrote:
>> kasprintf() returns a pointer to dynamically allocated memory
>> which can be NULL upon failure. Ensure the allocation was successful
>> by checking the pointer validity.
> …
>> +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
>> @@ -144,6 +144,10 @@ static int zap_shader_load_mdt(struct msm_gpu *gpu, const char *fwname,
>> char *newname;
>>
>> newname = kasprintf(GFP_KERNEL, "qcom/%s", fwname);
>> + if (!newname) {
>> + ret = -ENOMEM;
>> + goto out;
>> + }
> …
>
> How do you think about to avoid the repetition of the pointer check
> for the variable “mem_region”?
"mem_region"? Is this a clerical error, do you mean 'newname'?
No check found in __qcom_mdt_load for 'newname'.
'newname' is used for printing in '__qcom_mdt_load' in some cases, which
is a bit dangerous.
So it's necessary check it before using it.
> Can the usage of other labels become more appropriate?
>
> Regards,
> Markus
--
Thanks,
Kunwu
>>> kasprintf() returns a pointer to dynamically allocated memory
>>> which can be NULL upon failure. Ensure the allocation was successful
>>> by checking the pointer validity.
>> …
>>> +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
>>> @@ -144,6 +144,10 @@ static int zap_shader_load_mdt(struct msm_gpu *gpu, const char *fwname,
>>> char *newname;
>>>
>>> newname = kasprintf(GFP_KERNEL, "qcom/%s", fwname);
>>> + if (!newname) {
>>> + ret = -ENOMEM;
>>> + goto out;
>>> + }
>> …
>>
>> How do you think about to avoid the repetition of the pointer check
>> for the variable “mem_region”?
> "mem_region"? Is this a clerical error, do you mean 'newname'?
Please take another look at implementation details:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/msm/adreno/adreno_gpu.c?h=v6.7#n124
…
>> Can the usage of other labels become more appropriate?
I propose to reconsider also the influence of the label “out” here.
https://elixir.bootlin.com/linux/v6.7/source/drivers/gpu/drm/msm/adreno/adreno_gpu.c#L167
Regards,
Markus