On Thursday 19 August 2021 13:13:05 Loic Poulain wrote:
> +static void acm_notify_complete(struct usb_ep *ep, struct usb_request *req)
> +{
> +     if (req->status)
> +             printf("CDC ACM notify failed (%d)\n", req->status);
> +
> +     /* nothing to do */
> +}
> +
> +static void acm_tx_complete(struct usb_ep *ep, struct usb_request *req)
> +{
> +     static int once; /* prevent infinite recursion */
> +
> +     if (req->status && !once++)
> +             printf("CDC ACM TX failed (%d)\n", req->status);
> +
> +     struct f_acm *f_acm = req->context;
> +
> +     f_acm->tx_on = true;
> +}
> +
> +static void acm_rx_complete(struct usb_ep *ep, struct usb_request *req)
> +{
> +     struct f_acm *f_acm = req->context;
> +
> +     if (req->status != 0)
> +             printf("CDC ACM RX failed (%d)\n", req->status);

I guess all these prints can cause issues like infinite loop. If stdout
is set to this usb acm gadget then printf will call these functions
again.

Reply via email to