mirror of
https://github.com/torvalds/linux.git
synced 2026-09-11 20:13:02 +02:00
s390/diag324: Preserve -EBUSY return code
When diag324 reports -EBUSY, the error code is
overwritten by the result of copy_to_user() and put_user(). As a result,
the ioctl may incorrectly return success instead of -EBUSY.
Preserve the original diag324 return code and only return -EFAULT when
copying data to userspace fails.
Fixes: 90e6f191e1 ("s390/diag324: Retrieve power readings via diag 0x324")
Signed-off-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
parent
a91a5c25a2
commit
439077c39d
|
|
@ -182,8 +182,7 @@ long diag324_pibbuf(unsigned long arg)
|
|||
goto out;
|
||||
rc = copy_to_user((void __user *)address, data->pib, data->pib->len);
|
||||
rc |= put_user(data->sequence, &udata->sequence);
|
||||
if (rc)
|
||||
rc = -EFAULT;
|
||||
rc = rc ? -EFAULT : data->rc;
|
||||
out:
|
||||
mutex_unlock(&pibmutex);
|
||||
return rc;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user