diff mbox series

ALSA: usb-audio: endpoint : remove redundant check before usb_free_coherent()

Message ID 20210204020518.76619-1-vulab@iscas.ac.cn
State New
Headers show
Series ALSA: usb-audio: endpoint : remove redundant check before usb_free_coherent() | expand

Commit Message

Xu Wang Feb. 4, 2021, 2:05 a.m. UTC
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(-)

Comments

Takashi Iwai Feb. 4, 2021, 6:40 a.m. UTC | #1
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 mbox series

Patch

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;
 }