2021-02-04 02:56:46

by Xu Wang

[permalink] [raw]
Subject: [PATCH] ALSA: usb-audio: endpoint : remove redundant check before usb_free_coherent()

usb_free_coherent() is safe with NULL addr and this check is
not required.

Signed-off-by: Xu Wang <[email protected]>
---
sound/usb/endpoint.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

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


2021-02-04 06:43:24

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH] ALSA: usb-audio: endpoint : remove redundant check before usb_free_coherent()

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