Commit b1979778 authored by Szymon Wilczek's avatar Szymon Wilczek Committed by Marc Kleine-Budde
Browse files

can: etas_es58x: allow partial RX URB allocation to succeed



When es58x_alloc_rx_urbs() fails to allocate the requested number of
URBs but succeeds in allocating some, it returns an error code.
This causes es58x_open() to return early, skipping the cleanup label
'free_urbs', which leads to the anchored URBs being leaked.

As pointed out by maintainer Vincent Mailhol, the driver is designed
to handle partial URB allocation gracefully. Therefore, partial
allocation should not be treated as a fatal error.

Modify es58x_alloc_rx_urbs() to return 0 if at least one URB has been
allocated, restoring the intended behavior and preventing the leak
in es58x_open().

Fixes: 85372578 ("can: etas_es58x: add core support for ETAS ES58X CAN USB interfaces")
Reported-by: default avatar <syzbot+e8cb6691a7cf68256cb8@syzkaller.appspotmail.com>
Closes: https://syzkaller.appspot.com/bug?extid=e8cb6691a7cf68256cb8


Signed-off-by: default avatarSzymon Wilczek <swilczek.lx@gmail.com>
Reviewed-by: default avatarVincent Mailhol <mailhol@kernel.org>
Link: https://patch.msgid.link/20251223011732.39361-1-swilczek.lx@gmail.com


Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent 872ac785
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1736,7 +1736,7 @@ static int es58x_alloc_rx_urbs(struct es58x_device *es58x_dev)
	dev_dbg(dev, "%s: Allocated %d rx URBs each of size %u\n",
		__func__, i, rx_buf_len);

	return ret;
	return 0;
}

/**