Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 11b1bf81 authored by Thomas Pugliese's avatar Thomas Pugliese Committed by Greg Kroah-Hartman
Browse files

USB: WUSBCORE: fix resource cleanup in error path in __wa_xfer_setup_segs



Use usb_free_urb instead of kfree in error path and point to the correct
URB.  Also remember to clean up the sg list for the URB if it was allocated.

Signed-off-by: default avatarThomas Pugliese <thomas.pugliese@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 6d33f7bb
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -804,15 +804,17 @@ static int __wa_xfer_setup_segs(struct wa_xfer *xfer, size_t xfer_hdr_size)
	return 0;

error_sg_alloc:
	kfree(seg->dto_urb);
	usb_free_urb(xfer->seg[cnt]->dto_urb);
error_dto_alloc:
	kfree(xfer->seg[cnt]);
	cnt--;
error_seg_kzalloc:
	/* use the fact that cnt is left at were it failed */
	for (; cnt >= 0; cnt--) {
		if (xfer->seg[cnt] && xfer->is_inbound == 0)
		if (xfer->seg[cnt] && xfer->is_inbound == 0) {
			usb_free_urb(xfer->seg[cnt]->dto_urb);
			kfree(xfer->seg[cnt]->dto_urb->sg);
		}
		kfree(xfer->seg[cnt]);
	}
error_segs_kzalloc: