Re: [PATCH] drivers/fsi/scom: Return -EFAULT if copy fails

From: Longsuhui
Date: Tue May 23 2023 - 00:45:49 EST



On 2023/5/23 06:30, Guenter Roeck wrote:
On Fri, May 19, 2023 at 09:37:10AM +0800, Su Hui wrote:
The copy_to/from_user() functions return the number of bytes remaining
to be copied, but we want to return -EFAULT to the user.

Why ? EFAULT means that a bad address was provided, and it is not
immediately obvious why that would be the case.

When copy_to/from_user() functions failed, the error code is -EFAULT in most case.

git grep -A1 "copy_from_user" | grep EFAULT | wc -l
    1985
git grep -A1 "copy_to_user" | grep EFAULT | wc -l
    1871

I think return -EFAULT is also right in this case.

Su Hui

Guenter

Fixes: 680ca6dcf5c2 ("drivers/fsi: Add SCOM FSI client device driver")
Signed-off-by: Su Hui <suhui@xxxxxxxxxxxx>
---
drivers/fsi/fsi-scom.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/fsi/fsi-scom.c b/drivers/fsi/fsi-scom.c
index bcb756dc9866..caaf7738eb98 100644
--- a/drivers/fsi/fsi-scom.c
+++ b/drivers/fsi/fsi-scom.c
@@ -335,7 +335,7 @@ static ssize_t scom_read(struct file *filep, char __user *buf, size_t len,
if (rc)
dev_dbg(dev, "copy to user failed:%d\n", rc);
- return rc ? rc : len;
+ return rc ? -EFAULT : len;
}
static ssize_t scom_write(struct file *filep, const char __user *buf,
--
2.30.2