diff --git a/drivers/usbdev/composite.c b/drivers/usbdev/composite.c index b3795b5c2b2..463282b419d 100644 --- a/drivers/usbdev/composite.c +++ b/drivers/usbdev/composite.c @@ -680,7 +680,12 @@ static int composite_setup(FAR struct usbdevclass_driver_s *driver, /* Setup the request */ ctrlreq->len = MIN(len, ret); - ctrlreq->flags = USBDEV_REQFLAGS_NULLPKT; + + /* Only when ret is less than len do zero length packet + * need to be sent + */ + + ctrlreq->flags = ret < len ? USBDEV_REQFLAGS_NULLPKT : 0; /* And submit the request to the USB controller driver */