Re: [PATCH 1/2] accel/qaic: Replace kzalloc + copy_from_user with memdup_user

From: Karol Wachowski
Date: Wed Sep 17 2025 - 08:58:53 EST


Reviewed-by: Karol Wachowski <karol.wachowski@xxxxxxxxxxxxxxx>

On 9/17/2025 2:48 PM, Thorsten Blum wrote:
> Replace kzalloc() followed by copy_from_user() with memdup_user() to
> improve and simplify qaic_attach_slice_bo_ioctl().
>
> No functional changes intended.
>
> Signed-off-by: Thorsten Blum <thorsten.blum@xxxxxxxxx>
> ---
> drivers/accel/qaic/qaic_data.c | 13 ++++---------
> 1 file changed, 4 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/accel/qaic/qaic_data.c b/drivers/accel/qaic/qaic_data.c
> index 797289e9d780..202bdca58847 100644
> --- a/drivers/accel/qaic/qaic_data.c
> +++ b/drivers/accel/qaic/qaic_data.c
> @@ -18,6 +18,7 @@
> #include <linux/scatterlist.h>
> #include <linux/spinlock.h>
> #include <linux/srcu.h>
> +#include <linux/string.h>
> #include <linux/types.h>
> #include <linux/uaccess.h>
> #include <linux/wait.h>
> @@ -984,18 +985,12 @@ int qaic_attach_slice_bo_ioctl(struct drm_device *dev, void *data, struct drm_fi
>
> user_data = u64_to_user_ptr(args->data);
>
> - slice_ent = kzalloc(arg_size, GFP_KERNEL);
> - if (!slice_ent) {
> - ret = -EINVAL;
> + slice_ent = memdup_user(user_data, arg_size);
> + if (IS_ERR(slice_ent)) {
> + ret = PTR_ERR(slice_ent);
> goto unlock_dev_srcu;
> }
>
> - ret = copy_from_user(slice_ent, user_data, arg_size);
> - if (ret) {
> - ret = -EFAULT;
> - goto free_slice_ent;
> - }
> -
> obj = drm_gem_object_lookup(file_priv, args->hdr.handle);
> if (!obj) {
> ret = -ENOENT;