]> git.hungrycats.org Git - linux/commitdiff
[PATCH] USB: fix error return codes in usblp
authorOliver Neukum <oliver@neukum.org>
Tue, 9 Dec 2003 01:53:21 +0000 (17:53 -0800)
committerGreg Kroah-Hartman <greg@kroah.com>
Tue, 9 Dec 2003 01:53:21 +0000 (17:53 -0800)
this fixes the questionable error return codes Paulo noticed
in usblp. I hope I really got all cases now.

drivers/usb/class/usblp.c

index 0246c91cf87130d1ebd336c5baf41b9ec1bc2578..d034a60c06ff0667decc4dc835eda708d9938dc9 100644 (file)
@@ -610,7 +610,7 @@ static ssize_t usblp_write(struct file *file, const char __user *buffer, size_t
                if (!usblp->wcomplete) {
                        barrier();
                        if (file->f_flags & O_NONBLOCK)
-                               return -EAGAIN;
+                               return writecount ? writecount : -EAGAIN;
 
                        timeout = USBLP_WRITE_TIMEOUT;
                        add_wait_queue(&usblp->wait, &wait);
@@ -673,8 +673,8 @@ static ssize_t usblp_write(struct file *file, const char __user *buffer, size_t
 
                usblp->writeurb->dev = usblp->dev;
                usblp->wcomplete = 0;
-               if (usb_submit_urb(usblp->writeurb, GFP_KERNEL)) {
-                       count = -EIO;
+               if (err = usb_submit_urb(usblp->writeurb, GFP_KERNEL)) {
+                       count = err != -ENOMEM ? -EIO : (writecount ? writecount : -ENOMEM);
                        up (&usblp->sem);
                        break;
                }