Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/imagination: Use memdup_user() helper

Switching to memdup_user(), which combines kmalloc() and copy_from_user(),
and it can simplfy code.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Suggested-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240902023300.1214753-1-ruanjinjie@huawei.com
Signed-off-by: Matt Coster <matt.coster@imgtec.com>

authored by

Jinjie Ruan and committed by
Matt Coster
2872a57c 3742c209

+3 -15
+3 -15
drivers/gpu/drm/imagination/pvr_context.c
··· 69 69 void *stream; 70 70 int err; 71 71 72 - stream = kzalloc(stream_size, GFP_KERNEL); 73 - if (!stream) 74 - return -ENOMEM; 75 - 76 - if (copy_from_user(stream, u64_to_user_ptr(stream_user_ptr), stream_size)) { 77 - err = -EFAULT; 78 - goto err_free; 79 - } 72 + stream = memdup_user(u64_to_user_ptr(stream_user_ptr), stream_size); 73 + if (IS_ERR(stream)) 74 + return PTR_ERR(stream); 80 75 81 76 err = pvr_stream_process(pvr_dev, cmd_defs, stream, stream_size, dest); 82 - if (err) 83 - goto err_free; 84 77 85 - kfree(stream); 86 - 87 - return 0; 88 - 89 - err_free: 90 78 kfree(stream); 91 79 92 80 return err;