Message ID | 20210204020518.76619-1-vulab@iscas.ac.cn (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ALSA: usb-audio: endpoint : remove redundant check before usb_free_coherent() | expand |
On Thu, 04 Feb 2021 03:05:18 +0100, Xu Wang wrote: > > usb_free_coherent() is safe with NULL addr and this check is > not required. The check there isn't about NULL buffer or not; instead it checks whether the buffer was allocated for each or it shares the single buffer (for sync endpoints). In the latter case, your patch will lead to double-free. thanks, Takashi
diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c index 8e568823c992..d5ed4ddfd451 100644 --- a/sound/usb/endpoint.c +++ b/sound/usb/endpoint.c @@ -82,10 +82,9 @@ static inline unsigned get_usb_high_speed_rate(unsigned int rate) */ static void release_urb_ctx(struct snd_urb_ctx *u) { - if (u->buffer_size) - usb_free_coherent(u->ep->chip->dev, u->buffer_size, - u->urb->transfer_buffer, - u->urb->transfer_dma); + usb_free_coherent(u->ep->chip->dev, u->buffer_size, + u->urb->transfer_buffer, + u->urb->transfer_dma); usb_free_urb(u->urb); u->urb = NULL; }
usb_free_coherent() is safe with NULL addr and this check is not required. Signed-off-by: Xu Wang <vulab@iscas.ac.cn> --- sound/usb/endpoint.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)