From b3e80c5faadda64e1082fcbc492d78cc64a3c185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mo=C5=84?= Date: Tue, 24 Jun 2025 14:47:44 +0200 Subject: [PATCH] usb: device_next: uac2: Do not leak double buffered endpoint MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UDC drivers use udc_buf_get_all() when dequeueing endpoint. On drivers that require double buffering for isochronous IN endpoint, the dequeue on interface disable will result in class request API called on net_buf with frags set. Call release callback on the buffer pointed in frags because it was passed in using usbd_uac2_send(). Signed-off-by: Tomasz Moń --- subsys/usb/device_next/class/usbd_uac2.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/subsys/usb/device_next/class/usbd_uac2.c b/subsys/usb/device_next/class/usbd_uac2.c index 2e55a9a017a..efa3fd6cdf3 100644 --- a/subsys/usb/device_next/class/usbd_uac2.c +++ b/subsys/usb/device_next/class/usbd_uac2.c @@ -816,6 +816,9 @@ static int uac2_request(struct usbd_class_data *const c_data, struct net_buf *bu ctx->user_data); } else if (!is_feedback) { ctx->ops->buf_release_cb(dev, terminal, buf->__buf, ctx->user_data); + if (buf->frags) { + ctx->ops->buf_release_cb(dev, terminal, buf->frags->__buf, ctx->user_data); + } } usbd_ep_buf_free(uds_ctx, buf);