aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2023-12-26 01:38:04 +0000
committerMark Johnston <markj@FreeBSD.org>2023-12-26 02:04:00 +0000
commitb2caed2f8d699d6dc59ecf8810d945cdea148c44 (patch)
treee520e60603a8a8a508477c872e4de747cdbf221f /sys
parente452fa70d50761b5fe5f19c3c93c107be116728c (diff)
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/usb/input/uhid.c14
-rw-r--r--sys/dev/usb/input/uhid_snes.c14
2 files changed, 16 insertions, 12 deletions
diff --git a/sys/dev/usb/input/uhid.c b/sys/dev/usb/input/uhid.c
index 2f65a07dea56..863e04f4e52b 100644
--- a/sys/dev/usb/input/uhid.c
+++ b/sys/dev/usb/input/uhid.c
@@ -634,9 +634,10 @@ uhid_ioctl(struct usb_fifo *fifo, u_long cmd, void *addr,
return (EINVAL);
}
if (id != 0)
- copyin(ugd->ugd_data, &id, 1);
- error = uhid_get_report(sc, ugd->ugd_report_type, id,
- NULL, ugd->ugd_data, imin(ugd->ugd_maxlen, size));
+ 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));
break;
case USB_SET_REPORT:
@@ -661,9 +662,10 @@ uhid_ioctl(struct usb_fifo *fifo, u_long cmd, void *addr,
return (EINVAL);
}
if (id != 0)
- copyin(ugd->ugd_data, &id, 1);
- error = uhid_set_report(sc, ugd->ugd_report_type, id,
- NULL, ugd->ugd_data, imin(ugd->ugd_maxlen, size));
+ error = copyin(ugd->ugd_data, &id, 1);
+ if (error == 0)
+ error = uhid_set_report(sc, ugd->ugd_report_type, id,
+ NULL, ugd->ugd_data, imin(ugd->ugd_maxlen, size));
break;
case USB_GET_REPORT_ID:
diff --git a/sys/dev/usb/input/uhid_snes.c b/sys/dev/usb/input/uhid_snes.c
index 085881faa88b..7a16542794cc 100644
--- a/sys/dev/usb/input/uhid_snes.c
+++ b/sys/dev/usb/input/uhid_snes.c
@@ -359,9 +359,10 @@ uhid_snes_ioctl(struct usb_fifo *fifo, u_long cmd, void *data, int fflags)
return (EINVAL);
}
if (id != 0)
- copyin(ugd->ugd_data, &id, 1);
- error = uhid_get_report(sc, ugd->ugd_report_type, id,
- NULL, ugd->ugd_data, imin(ugd->ugd_maxlen, size));
+ 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));
break;
case USB_SET_REPORT:
@@ -386,9 +387,10 @@ uhid_snes_ioctl(struct usb_fifo *fifo, u_long cmd, void *data, int fflags)
return (EINVAL);
}
if (id != 0)
- copyin(ugd->ugd_data, &id, 1);
- error = uhid_set_report(sc, ugd->ugd_report_type, id,
- NULL, ugd->ugd_data, imin(ugd->ugd_maxlen, size));
+ error = copyin(ugd->ugd_data, &id, 1);
+ if (error == 0)
+ error = uhid_set_report(sc, ugd->ugd_report_type, id,
+ NULL, ugd->ugd_data, imin(ugd->ugd_maxlen, size));
break;
case USB_GET_REPORT_ID: