Skip to contentSkip to conversation

CVE-2020-12770: easy backport of sg code

cip-dev Pavel Machek 2 participants 2 messages May 14, 2020 – May 15, 2020

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi!

So let me investigate... Mainline fix is commit 83c6f2390040f188cc25b270b4befeb5628c1aee.

Backport for 4.19 looks really easy, and I can't see anything wrong there:

commit c45e3bcdebb204ef1ba1d00f41fe7ed39c4dd8cd

Author: Pavel Machek <[email protected]>
Date:   Thu May 14 23:47:42 2020 +0200

Backport.

commit 83c6f2390040f188cc25b270b4befeb5628c1aee
...
scsi: sg: add sg_remove_request in sg_write

If the __copy_from_user function failed we need to call sg_remove_request
in sg_write.

drivers/scsi/sg.c +3 -1
index 8a254bb46a9b..4f00d3062bd6 100644
@@ -694,8 +694,10 @@ sg_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
 	hp->flags = input_size;	/* structure abuse ... */
 	hp->pack_id = old_hdr.pack_id;
 	hp->usr_ptr = NULL;
-	if (__copy_from_user(cmnd, buf, cmd_size))
+	if (__copy_from_user(cmnd, buf, cmd_size)) {
+		sg_remove_request(sfp, srp);
 		return -EFAULT;
+	}
 	/*
 	 * SG_DXFER_TO_FROM_DEV is functionally equivalent to SG_DXFER_FROM_DEV,
 	 * but is is possible that the app intended SG_DXFER_TO_DEV, because there

And I don't see a problem with 4.4, either.

Best regards,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#4621): https://lists.cip-project.org/g/cip-dev/message/4621
Mute This Topic: https://lists.cip-project.org/mt/74215710/4520388
Group Owner: [email protected]
Unsubscribe: https://lists.cip-project.org/g/cip-dev/leave/8129055/727948398/xyzzy [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

#1 lore raw

Hi Pavel,

Thanks for your work.
I was also working on this.
But the same patch seems to have already been posted by Guenter Roeck.

https://lore.kernel.org/stable/[email protected]/

Best regards,
Nobuhiro

Quoted 49 lines

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Pavel Machek
Sent: Friday, May 15, 2020 6:56 AM
To: [email protected]
Subject: [cip-dev] CVE-2020-12770: easy backport of sg code

Hi!

So let me investigate... Mainline fix is commit 83c6f2390040f188cc25b270b4befeb5628c1aee.

Backport for 4.19 looks really easy, and I can't see anything wrong there:

commit c45e3bcdebb204ef1ba1d00f41fe7ed39c4dd8cd

Author: Pavel Machek <[email protected]>
Date:   Thu May 14 23:47:42 2020 +0200

Backport.

commit 83c6f2390040f188cc25b270b4befeb5628c1aee
...
scsi: sg: add sg_remove_request in sg_write

If the __copy_from_user function failed we need to call sg_remove_request
in sg_write.

drivers/scsi/sg.c +3 -1
index 8a254bb46a9b..4f00d3062bd6 100644
@@ -694,8 +694,10 @@ sg_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
 	hp->flags = input_size;	/* structure abuse ... */
 	hp->pack_id = old_hdr.pack_id;
 	hp->usr_ptr = NULL;
-	if (__copy_from_user(cmnd, buf, cmd_size))
+	if (__copy_from_user(cmnd, buf, cmd_size)) {
+		sg_remove_request(sfp, srp);
 		return -EFAULT;
+	}
 	/*
 	 * SG_DXFER_TO_FROM_DEV is functionally equivalent to SG_DXFER_FROM_DEV,
 	 * but is is possible that the app intended SG_DXFER_TO_DEV, because there
Quoted 7 lines

And I don't see a problem with 4.4, either.

Best regards,
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#4622): https://lists.cip-project.org/g/cip-dev/message/4622
Mute This Topic: https://lists.cip-project.org/mt/74215710/4520388
Group Owner: [email protected]
Unsubscribe: https://lists.cip-project.org/g/cip-dev/leave/8129055/727948398/xyzzy [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-