From: Philip J Kelleher <pjk1...@linux.vnet.ibm.com>

The driver is returning the wrong values during
copy_from_user and copy_to_user. It, also, is not
setting ENOMEM during a failed workqueue allocation.

Signed-off-by: Philip J Kelleher <pjk1...@linux.vnet.ibm.com>
-------------------------------------------------------------------------------


diff -uprN -X linux-block-vanilla/Documentation/dontdiff 
linux-block-vanilla/drivers/block/rsxx/core.c 
linux-block/drivers/block/rsxx/core.c
--- linux-block-vanilla/drivers/block/rsxx/core.c       2013-07-23 
10:43:46.182724965 -0500
+++ linux-block/drivers/block/rsxx/core.c       2013-07-23 10:46:25.646465285 
-0500
@@ -199,9 +199,8 @@ static ssize_t rsxx_cram_read(struct fil
        if (st)
                return st;
 
-       st = copy_to_user(ubuf, buf, cnt);
-       if (st)
-               return st;
+       if (copy_to_user(ubuf, buf, cnt))
+               return -EFAULT;
 
        info->offset += cnt;
 
@@ -222,9 +221,8 @@ static ssize_t rsxx_cram_write(struct fi
        if (!buf)
                return -ENOMEM;
 
-       st = copy_from_user(buf, ubuf, cnt);
-       if (st)
-               return st;
+       if (copy_from_user(buf, ubuf, cnt))
+               return -EFAULT;
 
        info->f_pos = (u32)*ppos + info->offset;
 
@@ -946,6 +944,7 @@ static int rsxx_pci_probe(struct pci_dev
        card->event_wq = create_singlethread_workqueue(DRIVER_NAME"_event");
        if (!card->event_wq) {
                dev_err(CARD_TO_DEV(card), "Failed card event setup.\n");
+               st = -ENOMEM;
                goto failed_event_handler;
        }
 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to