From: Philip J Kelleher <pjk1...@linux.vnet.ibm.com> The rsxx 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-08-12 15:32:49.468858233 -0500 +++ linux-block/drivers/block/rsxx/core.c 2013-08-12 15:33:03.600861005 -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; @@ -942,6 +940,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/