uhid(4): update ugd_actlen in USB_GET_REPORT ioctl

USB_GET_REPORT ioctl is documented to update ugd_actlen on return with
the number of bytes copied.  It does not do this.

Reviewed by:	wulf
PR:		282790
MFC after:	1 week

(cherry picked from commit 0b5d86b38ae9aec92ef96b9227a404a2df3c9234)
This commit is contained in:
Matthew Nygard Dodd 2024-11-18 07:15:01 +03:00 committed by Vladimir Kondratyev
parent 0520d2ea9d
commit 4bbc69192e

View file

@ -633,11 +633,13 @@ uhid_ioctl(struct usb_fifo *fifo, u_long cmd, void *addr,
default:
return (EINVAL);
}
size = imin(ugd->ugd_maxlen, size);
if (id != 0)
error = copyin(ugd->ugd_data, &id, 1);
if (error == 0)
error = uhid_get_report(sc, ugd->ugd_report_type, id,
NULL, ugd->ugd_data, imin(ugd->ugd_maxlen, size));
NULL, ugd->ugd_data, size);
ugd->ugd_actlen = size;
break;
case USB_SET_REPORT: