drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-)
Replace kzalloc() followed by copy_from_user() with memdup_user() to
improve and simplify ta_if_load_debugfs_write() and
ta_if_invoke_debugfs_write().
No functional changes intended.
Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c | 20 ++++++--------------
1 file changed, 6 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
index 38face981c3e..6e8aad91bcd3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
@@ -171,13 +171,9 @@ static ssize_t ta_if_load_debugfs_write(struct file *fp, const char *buf, size_t
copy_pos += sizeof(uint32_t);
- ta_bin = kzalloc(ta_bin_len, GFP_KERNEL);
- if (!ta_bin)
- return -ENOMEM;
- if (copy_from_user((void *)ta_bin, &buf[copy_pos], ta_bin_len)) {
- ret = -EFAULT;
- goto err_free_bin;
- }
+ ta_bin = memdup_user(&buf[copy_pos], ta_bin_len);
+ if (IS_ERR(ta_bin))
+ return PTR_ERR(ta_bin);
/* Set TA context and functions */
set_ta_context_funcs(psp, ta_type, &context);
@@ -327,13 +323,9 @@ static ssize_t ta_if_invoke_debugfs_write(struct file *fp, const char *buf, size
return -EFAULT;
copy_pos += sizeof(uint32_t);
- shared_buf = kzalloc(shared_buf_len, GFP_KERNEL);
- if (!shared_buf)
- return -ENOMEM;
- if (copy_from_user((void *)shared_buf, &buf[copy_pos], shared_buf_len)) {
- ret = -EFAULT;
- goto err_free_shared_buf;
- }
+ shared_buf = memdup_user(&buf[copy_pos], shared_buf_len);
+ if (IS_ERR(shared_buf))
+ return PTR_ERR(shared_buf);
set_ta_context_funcs(psp, ta_type, &context);
--
2.51.0
On 08/09/2025 22:15, Thorsten Blum wrote:
> Replace kzalloc() followed by copy_from_user() with memdup_user() to
> improve and simplify ta_if_load_debugfs_write() and
> ta_if_invoke_debugfs_write().
>
> No functional changes intended.
>
> Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c | 20 ++++++--------------
> 1 file changed, 6 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
> index 38face981c3e..6e8aad91bcd3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
> @@ -171,13 +171,9 @@ static ssize_t ta_if_load_debugfs_write(struct file *fp, const char *buf, size_t
>
> copy_pos += sizeof(uint32_t);
>
> - ta_bin = kzalloc(ta_bin_len, GFP_KERNEL);
> - if (!ta_bin)
> - return -ENOMEM;
> - if (copy_from_user((void *)ta_bin, &buf[copy_pos], ta_bin_len)) {
> - ret = -EFAULT;
> - goto err_free_bin;
> - }
> + ta_bin = memdup_user(&buf[copy_pos], ta_bin_len);
> + if (IS_ERR(ta_bin))
> + return PTR_ERR(ta_bin);
>
> /* Set TA context and functions */
> set_ta_context_funcs(psp, ta_type, &context);
> @@ -327,13 +323,9 @@ static ssize_t ta_if_invoke_debugfs_write(struct file *fp, const char *buf, size
> return -EFAULT;
> copy_pos += sizeof(uint32_t);
>
> - shared_buf = kzalloc(shared_buf_len, GFP_KERNEL);
> - if (!shared_buf)
> - return -ENOMEM;
> - if (copy_from_user((void *)shared_buf, &buf[copy_pos], shared_buf_len)) {
> - ret = -EFAULT;
> - goto err_free_shared_buf;
> - }
> + shared_buf = memdup_user(&buf[copy_pos], shared_buf_len);
> + if (IS_ERR(shared_buf))
> + return PTR_ERR(shared_buf);
>
> set_ta_context_funcs(psp, ta_type, &context);
>
More complete than the one I sent in June^1.
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
I had some other in that series, not sure if you caught those.
Regards,
Tvrtko
1)
https://lore.kernel.org/amd-gfx/20250612104430.41169-1-tvrtko.ursulin@igalia.com/
On Tue, Sep 9, 2025 at 4:17 AM Tvrtko Ursulin <tursulin@ursulin.net> wrote:
>
>
> On 08/09/2025 22:15, Thorsten Blum wrote:
> > Replace kzalloc() followed by copy_from_user() with memdup_user() to
> > improve and simplify ta_if_load_debugfs_write() and
> > ta_if_invoke_debugfs_write().
> >
> > No functional changes intended.
> >
> > Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
> > ---
> > drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c | 20 ++++++--------------
> > 1 file changed, 6 insertions(+), 14 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
> > index 38face981c3e..6e8aad91bcd3 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
> > @@ -171,13 +171,9 @@ static ssize_t ta_if_load_debugfs_write(struct file *fp, const char *buf, size_t
> >
> > copy_pos += sizeof(uint32_t);
> >
> > - ta_bin = kzalloc(ta_bin_len, GFP_KERNEL);
> > - if (!ta_bin)
> > - return -ENOMEM;
> > - if (copy_from_user((void *)ta_bin, &buf[copy_pos], ta_bin_len)) {
> > - ret = -EFAULT;
> > - goto err_free_bin;
> > - }
> > + ta_bin = memdup_user(&buf[copy_pos], ta_bin_len);
> > + if (IS_ERR(ta_bin))
> > + return PTR_ERR(ta_bin);
> >
> > /* Set TA context and functions */
> > set_ta_context_funcs(psp, ta_type, &context);
> > @@ -327,13 +323,9 @@ static ssize_t ta_if_invoke_debugfs_write(struct file *fp, const char *buf, size
> > return -EFAULT;
> > copy_pos += sizeof(uint32_t);
> >
> > - shared_buf = kzalloc(shared_buf_len, GFP_KERNEL);
> > - if (!shared_buf)
> > - return -ENOMEM;
> > - if (copy_from_user((void *)shared_buf, &buf[copy_pos], shared_buf_len)) {
> > - ret = -EFAULT;
> > - goto err_free_shared_buf;
> > - }
> > + shared_buf = memdup_user(&buf[copy_pos], shared_buf_len);
> > + if (IS_ERR(shared_buf))
> > + return PTR_ERR(shared_buf);
> >
> > set_ta_context_funcs(psp, ta_type, &context);
> >
>
> More complete than the one I sent in June^1.
I never received this series. I didn't see it in patchwork either.
Seems it never made it to amd-gfx. Sorry I missed it. I've applied
the applicable patches now.
>
> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Applied. Thanks!
Alex
>
> I had some other in that series, not sure if you caught those.
>
> Regards,
>
> Tvrtko
>
> 1)
> https://lore.kernel.org/amd-gfx/20250612104430.41169-1-tvrtko.ursulin@igalia.com/
>
On 09/09/2025 14:36, Alex Deucher wrote:
> On Tue, Sep 9, 2025 at 4:17 AM Tvrtko Ursulin <tursulin@ursulin.net> wrote:
>>
>>
>> On 08/09/2025 22:15, Thorsten Blum wrote:
>>> Replace kzalloc() followed by copy_from_user() with memdup_user() to
>>> improve and simplify ta_if_load_debugfs_write() and
>>> ta_if_invoke_debugfs_write().
>>>
>>> No functional changes intended.
>>>
>>> Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
>>> ---
>>> drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c | 20 ++++++--------------
>>> 1 file changed, 6 insertions(+), 14 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
>>> index 38face981c3e..6e8aad91bcd3 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
>>> @@ -171,13 +171,9 @@ static ssize_t ta_if_load_debugfs_write(struct file *fp, const char *buf, size_t
>>>
>>> copy_pos += sizeof(uint32_t);
>>>
>>> - ta_bin = kzalloc(ta_bin_len, GFP_KERNEL);
>>> - if (!ta_bin)
>>> - return -ENOMEM;
>>> - if (copy_from_user((void *)ta_bin, &buf[copy_pos], ta_bin_len)) {
>>> - ret = -EFAULT;
>>> - goto err_free_bin;
>>> - }
>>> + ta_bin = memdup_user(&buf[copy_pos], ta_bin_len);
>>> + if (IS_ERR(ta_bin))
>>> + return PTR_ERR(ta_bin);
>>>
>>> /* Set TA context and functions */
>>> set_ta_context_funcs(psp, ta_type, &context);
>>> @@ -327,13 +323,9 @@ static ssize_t ta_if_invoke_debugfs_write(struct file *fp, const char *buf, size
>>> return -EFAULT;
>>> copy_pos += sizeof(uint32_t);
>>>
>>> - shared_buf = kzalloc(shared_buf_len, GFP_KERNEL);
>>> - if (!shared_buf)
>>> - return -ENOMEM;
>>> - if (copy_from_user((void *)shared_buf, &buf[copy_pos], shared_buf_len)) {
>>> - ret = -EFAULT;
>>> - goto err_free_shared_buf;
>>> - }
>>> + shared_buf = memdup_user(&buf[copy_pos], shared_buf_len);
>>> + if (IS_ERR(shared_buf))
>>> + return PTR_ERR(shared_buf);
>>>
>>> set_ta_context_funcs(psp, ta_type, &context);
>>>
>>
>> More complete than the one I sent in June^1.
>
> I never received this series. I didn't see it in patchwork either.
> Seems it never made it to amd-gfx. Sorry I missed it. I've applied
> the applicable patches now.
Thank you and no worries, it wasn't anything urgent.
Regards,
Tvrtko
© 2016 - 2026 Red Hat, Inc.