Patch "rsxx: Return -EFAULT if copy_to_user() fails" has been added to the 4.19-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    rsxx: Return -EFAULT if copy_to_user() fails

to the 4.19-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     rsxx-return-efault-if-copy_to_user-fails.patch
and it can be found in the queue-4.19 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 2fa1d7f2ce3cf358f01aed3043d2c325aa9167e7
Author: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
Date:   Wed Mar 3 13:59:12 2021 +0300

    rsxx: Return -EFAULT if copy_to_user() fails
    
    [ Upstream commit 77516d25f54912a7baedeeac1b1b828b6f285152 ]
    
    The copy_to_user() function returns the number of bytes remaining but
    we want to return -EFAULT to the user if it can't complete the copy.
    The "st" variable only holds zero on success or negative error codes on
    failure so the type should be int.
    
    Fixes: 36f988e978f8 ("rsxx: Adding in debugfs entries.")
    Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
    Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/block/rsxx/core.c b/drivers/block/rsxx/core.c
index 14056dc45064..d8ef8b16fb2e 100644
--- a/drivers/block/rsxx/core.c
+++ b/drivers/block/rsxx/core.c
@@ -179,15 +179,17 @@ static ssize_t rsxx_cram_read(struct file *fp, char __user *ubuf,
 {
 	struct rsxx_cardinfo *card = file_inode(fp)->i_private;
 	char *buf;
-	ssize_t st;
+	int st;
 
 	buf = kzalloc(cnt, GFP_KERNEL);
 	if (!buf)
 		return -ENOMEM;
 
 	st = rsxx_creg_read(card, CREG_ADD_CRAM + (u32)*ppos, cnt, buf, 1);
-	if (!st)
-		st = copy_to_user(ubuf, buf, cnt);
+	if (!st) {
+		if (copy_to_user(ubuf, buf, cnt))
+			st = -EFAULT;
+	}
 	kfree(buf);
 	if (st)
 		return st;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux