summaryrefslogtreecommitdiffstats
path: root/drivers/usb/wusbcore/wa-xfer.c
diff options
context:
space:
mode:
authorPan Bian <bianpan2016@163.com>2016-11-29 20:55:12 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-11-29 17:36:43 +0100
commitcd63a1c1952e169b788ee3ee2a064546ca325ea0 (patch)
treeab0d6b8541211c45b8fa28fd65a3bd6c230bbe80 /drivers/usb/wusbcore/wa-xfer.c
parentfca0ca95c34dde7e735ef322c599dfa0b4a2deae (diff)
downloadlinux-cd63a1c1952e169b788ee3ee2a064546ca325ea0.tar.gz
linux-cd63a1c1952e169b788ee3ee2a064546ca325ea0.tar.bz2
linux-cd63a1c1952e169b788ee3ee2a064546ca325ea0.zip
usb: return correct errno on failures
In function __wa_xfer_setup_segs(), variable result takes the return value. Its value should be a negative errno on failures. Because result may be reassigned in a loop, and its value is guaranteed to be not less than 0 during the following repeats of the loop. So when the call to kmalloc() or usb_alloc_urb() fails in the loop, the value of variable result may be 0 (indicates no error), which is inconsistent with the execution status. This patch fixes the bug, initializing variable result with -ENOMEM in the loop. Signed-off-by: Pan Bian <bianpan2016@163.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/wusbcore/wa-xfer.c')
-rw-r--r--drivers/usb/wusbcore/wa-xfer.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c
index 167fcc71f5f6..e70322b1dd02 100644
--- a/drivers/usb/wusbcore/wa-xfer.c
+++ b/drivers/usb/wusbcore/wa-xfer.c
@@ -1203,6 +1203,7 @@ static int __wa_xfer_setup_segs(struct wa_xfer *xfer, size_t xfer_hdr_size)
sizeof(struct wa_xfer_packet_info_hwaiso) +
(seg_isoc_frame_count * sizeof(__le16));
}
+ result = -ENOMEM;
seg = xfer->seg[cnt] = kmalloc(alloc_size + iso_pkt_descr_size,
GFP_ATOMIC);
if (seg == NULL)