diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2012-07-03 16:12:57 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2012-07-03 16:12:57 +0000 |
| commit | da1462366e698392fcdcf146194ca3a97297789d (patch) | |
| tree | 06ad681da9c8dda40d48ff45af199c008bacc2e6 /sys/dev/mfi | |
| parent | 7dcc1b85ddf7fa621e24c5f57d1ed3e35a1f24cb (diff) | |
Notes
Diffstat (limited to 'sys/dev/mfi')
| -rw-r--r-- | sys/dev/mfi/mfi.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/mfi/mfi.c b/sys/dev/mfi/mfi.c index a430efa74e0ae..2f99bc89a800c 100644 --- a/sys/dev/mfi/mfi.c +++ b/sys/dev/mfi/mfi.c @@ -73,6 +73,7 @@ __FBSDID("$FreeBSD$"); #include <sys/uio.h> #include <sys/proc.h> #include <sys/signalvar.h> +#include <sys/sysent.h> #include <sys/taskqueue.h> #include <machine/bus.h> @@ -2832,10 +2833,9 @@ mfi_user_command(struct mfi_softc *sc, struct mfi_ioc_passthru *ioc) if (ioc->buf_size > 0) { - ioc_buf = malloc(ioc->buf_size, M_MFIBUF, M_WAITOK); - if (ioc_buf == NULL) { + if (ioc->buf_size > 1024 * 1024) return (ENOMEM); - } + ioc_buf = malloc(ioc->buf_size, M_MFIBUF, M_WAITOK); error = copyin(ioc->buf, ioc_buf, ioc->buf_size); if (error) { device_printf(sc->mfi_dev, "failed to copyin\n"); @@ -3244,6 +3244,10 @@ out: } #ifdef COMPAT_FREEBSD32 case MFIIO_PASSTHRU32: + if (!SV_CURPROC_FLAG(SV_ILP32)) { + error = ENOTTY; + break; + } iop_swab.ioc_frame = iop32->ioc_frame; iop_swab.buf_size = iop32->buf_size; iop_swab.buf = PTRIN(iop32->buf); @@ -3259,7 +3263,7 @@ out: break; default: device_printf(sc->mfi_dev, "IOCTL 0x%lx not handled\n", cmd); - error = ENOENT; + error = ENOTTY; break; } |
