mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-18 06:33:43 -04:00
drm/amd/amdgpu: Fix up locking etc in amdgpu_debugfs_gprwave_ioctl()
There are two bugs here.
1) Drop the lock if copy_from_user() fails.
2) If the copy fails then the correct error code is -EFAULT instead of
-EINVAL.
I also broke up the long line and changed "sizeof rd->id" to
"sizeof(rd->id)".
Fixes: 553f973a0d ("drm/amd/amdgpu: Update debugfs for XCC support (v3)")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
321488d180
commit
9c9d501b28
@@ -478,15 +478,16 @@ done:
|
||||
static long amdgpu_debugfs_gprwave_ioctl(struct file *f, unsigned int cmd, unsigned long data)
|
||||
{
|
||||
struct amdgpu_debugfs_gprwave_data *rd = f->private_data;
|
||||
int r;
|
||||
int r = 0;
|
||||
|
||||
mutex_lock(&rd->lock);
|
||||
|
||||
switch (cmd) {
|
||||
case AMDGPU_DEBUGFS_GPRWAVE_IOC_SET_STATE:
|
||||
r = copy_from_user(&rd->id, (struct amdgpu_debugfs_gprwave_iocdata *)data, sizeof rd->id);
|
||||
if (r)
|
||||
return r ? -EINVAL : 0;
|
||||
if (copy_from_user(&rd->id,
|
||||
(struct amdgpu_debugfs_gprwave_iocdata *)data,
|
||||
sizeof(rd->id)))
|
||||
r = -EFAULT;
|
||||
goto done;
|
||||
default:
|
||||
r = -EINVAL;
|
||||
|
||||
Reference in New Issue
Block a user