Skip to content

Commit b3e80c5

Browse files
tmon-nordickartben
authored andcommitted
usb: device_next: uac2: Do not leak double buffered endpoint
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ń <tomasz.mon@nordicsemi.no>
1 parent 15cf0c5 commit b3e80c5

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

subsys/usb/device_next/class/usbd_uac2.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -816,6 +816,9 @@ static int uac2_request(struct usbd_class_data *const c_data, struct net_buf *bu
816816
ctx->user_data);
817817
} else if (!is_feedback) {
818818
ctx->ops->buf_release_cb(dev, terminal, buf->__buf, ctx->user_data);
819+
if (buf->frags) {
820+
ctx->ops->buf_release_cb(dev, terminal, buf->frags->__buf, ctx->user_data);
821+
}
819822
}
820823

821824
usbd_ep_buf_free(uds_ctx, buf);

0 commit comments

Comments
 (0)