Message ID | 20241106013541.77666-1-yuancan@huawei.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm/amdkfd: Fix wrong usage of INIT_WORK() | expand |
On 2024-11-05 20:35, Yuan Can wrote: > In kfd_procfs_show(), the sdma_activity_work_handler is a local variable > and the sdma_activity_work_handler.sdma_activity_work should initialize > with INIT_WORK_ONSTACK() instead of INIT_WORK(). > > Fixes: 32cb59f31362 ("drm/amdkfd: Track SDMA utilization per process") > Signed-off-by: Yuan Can <yuancan@huawei.com> Thank you. The patch is Reviewed-by: Felix Kuehling <felix.kuehling@amd.com> I am submitting it to amd-staging-drm-next. Regards, Felix > --- > drivers/gpu/drm/amd/amdkfd/kfd_process.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c > index d4aa843aacfd..2792015f1054 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c > @@ -338,8 +338,8 @@ static ssize_t kfd_procfs_show(struct kobject *kobj, struct attribute *attr, > attr_sdma); > struct kfd_sdma_activity_handler_workarea sdma_activity_work_handler; > > - INIT_WORK(&sdma_activity_work_handler.sdma_activity_work, > - kfd_sdma_activity_worker); > + INIT_WORK_ONSTACK(&sdma_activity_work_handler.sdma_activity_work, > + kfd_sdma_activity_worker); > > sdma_activity_work_handler.pdd = pdd; > sdma_activity_work_handler.sdma_activity_counter = 0; > @@ -347,6 +347,7 @@ static ssize_t kfd_procfs_show(struct kobject *kobj, struct attribute *attr, > schedule_work(&sdma_activity_work_handler.sdma_activity_work); > > flush_work(&sdma_activity_work_handler.sdma_activity_work); > + destroy_work_on_stack(&sdma_activity_work_handler.sdma_activity_work); > > return snprintf(buffer, PAGE_SIZE, "%llu\n", > (sdma_activity_work_handler.sdma_activity_counter)/
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c index d4aa843aacfd..2792015f1054 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c @@ -338,8 +338,8 @@ static ssize_t kfd_procfs_show(struct kobject *kobj, struct attribute *attr, attr_sdma); struct kfd_sdma_activity_handler_workarea sdma_activity_work_handler; - INIT_WORK(&sdma_activity_work_handler.sdma_activity_work, - kfd_sdma_activity_worker); + INIT_WORK_ONSTACK(&sdma_activity_work_handler.sdma_activity_work, + kfd_sdma_activity_worker); sdma_activity_work_handler.pdd = pdd; sdma_activity_work_handler.sdma_activity_counter = 0; @@ -347,6 +347,7 @@ static ssize_t kfd_procfs_show(struct kobject *kobj, struct attribute *attr, schedule_work(&sdma_activity_work_handler.sdma_activity_work); flush_work(&sdma_activity_work_handler.sdma_activity_work); + destroy_work_on_stack(&sdma_activity_work_handler.sdma_activity_work); return snprintf(buffer, PAGE_SIZE, "%llu\n", (sdma_activity_work_handler.sdma_activity_counter)/
In kfd_procfs_show(), the sdma_activity_work_handler is a local variable and the sdma_activity_work_handler.sdma_activity_work should initialize with INIT_WORK_ONSTACK() instead of INIT_WORK(). Fixes: 32cb59f31362 ("drm/amdkfd: Track SDMA utilization per process") Signed-off-by: Yuan Can <yuancan@huawei.com> --- drivers/gpu/drm/amd/amdkfd/kfd_process.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)