On Sat, 21 Sept 2024 at 00:43, Christian König <christian.koenig@xxxxxxx> wrote:
Am 20.09.24 um 18:31 schrieb Dipendra Khadka:Hi Christian,
On Fri, 20 Sept 2024 at 16:01, Christian König <christian.koenig@xxxxxxx> wrote:Well sorry to be so direct, but what the heck did you tried to do here?
Am 20.09.24 um 11:09 schrieb Dipendra Khadka:Thanks for enlightening me .
'''Well NAK, completely nonsense. Calling the function with a NULL fence is
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c:108:9: error: Null pointer dereference: fence [nullPointer]
return fence->timeline_name;
^
'''
The method to_amdgpu_amdkfd_fence can return NULL incase of empty f
or f->ops != &amdkfd_fence_ops.Hence, check has been added .
If fence is null , then null is returned.
illegal.
cppcheck reported null pointer dereference in the line " return
fence->timeline_name;" in the function "static const char
*amdkfd_fence_get_timeline_name(struct dma_fence *f)".
In the function , we are getting the value of fence like this :
"struct amdgpu_amdkfd_fence *fence = to_amdgpu_amdkfd_fence(f);"
When I went through the function " to_amdgpu_amdkfd_fence" whose definition is :
'''
struct amdgpu_amdkfd_fence *to_amdgpu_amdkfd_fence(struct dma_fence *f)
{
struct amdgpu_amdkfd_fence *fence;
if (!f)
return NULL;
fence = container_of(f, struct amdgpu_amdkfd_fence, base);
if (f->ops == &amdkfd_fence_ops)
return fence;
return NULL;
}
'''
Here, the function to_amdgpu_amdkfd_fence can return NULL when f is
empty or f->ops != &amdkfd_fence_ops .So the fence in function
"amdkfd_fence_get_timeline_name" can be NULL.
Hence , I thought dereferencing NULL fence like "return
fence->timeline_name" may result in the runtime crashing. So, I
proposed this fix. Sorry, I was not aware about the behaviour of the
fence.
I am interested in the development and tried to fix this .
I mean that is broken on so many different levels that I can'tRegards,
understand why somebody is suggesting something like that.
Regards,
Christian.
Regards,Regards,
Christian.
Signed-off-by: Dipendra Khadka <kdipendra88@xxxxxxxxx>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c
index 1ef758ac5076..2313babcc944 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c
@@ -105,6 +105,9 @@ static const char *amdkfd_fence_get_timeline_name(struct dma_fence *f)
{
struct amdgpu_amdkfd_fence *fence = to_amdgpu_amdkfd_fence(f);
+ if (!fence)
+ return NULL;
+
return fence->timeline_name;
}
Dipendra Khadka
Dipendra Khadka