<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">ChangeSet 1.1145, 2003/09/24 13:15:45-07:00, greg@kroah.com

[PATCH] USB: fix up two locking issues in mdc800 and vicam drivers

These were introduced by my previous copy_to_user audit and noticed
by Sergey Vlasov &lt;vsu@altlinux.ru&gt;


 drivers/usb/mdc800.c |    4 +++-
 drivers/usb/vicam.c  |    4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)


diff -Nru a/drivers/usb/mdc800.c b/drivers/usb/mdc800.c
--- a/drivers/usb/mdc800.c	Thu Sep 25 16:03:50 2003
+++ b/drivers/usb/mdc800.c	Thu Sep 25 16:03:50 2003
@@ -726,8 +726,10 @@
 		else
 		{
 			/* memcpy Bytes */
-			if (copy_to_user(ptr, &amp;mdc800-&gt;out [mdc800-&gt;out_ptr], sts))
+			if (copy_to_user(ptr, &amp;mdc800-&gt;out [mdc800-&gt;out_ptr], sts)) {
+				up (&amp;mdc800-&gt;io_lock);
 				return -EFAULT;
+			}
 			ptr+=sts;
 			left-=sts;
 			mdc800-&gt;out_ptr+=sts;
diff -Nru a/drivers/usb/vicam.c b/drivers/usb/vicam.c
--- a/drivers/usb/vicam.c	Thu Sep 25 16:03:50 2003
+++ b/drivers/usb/vicam.c	Thu Sep 25 16:03:50 2003
@@ -1004,8 +1004,10 @@
 	if (count &gt; cam-&gt;framebuf_size)
 		count = cam-&gt;framebuf_size;
 
-	if (copy_to_user(buf, cam-&gt;framebuf, count))
+	if (copy_to_user(buf, cam-&gt;framebuf, count)) {
+		up(&amp;cam-&gt;busy_lock);
 		return -EFAULT;
+	}
 
 	if (count != cam-&gt;framebuf_size)
 		cam-&gt;framebuf_read_start = count;
</pre></body></html>