summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/qlxge/qls_ioctl.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/dev/qlxge/qls_ioctl.c b/sys/dev/qlxge/qls_ioctl.c
index 5afa776..6b39fc9 100644
--- a/sys/dev/qlxge/qls_ioctl.c
+++ b/sys/dev/qlxge/qls_ioctl.c
@@ -100,13 +100,16 @@ qls_eioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag,
if (mpi_dump->size == 0) {
mpi_dump->size = sizeof (qls_mpi_coredump_t);
} else {
- if (mpi_dump->size < sizeof (qls_mpi_coredump_t))
+ if ((mpi_dump->size != sizeof (qls_mpi_coredump_t)) ||
+ (mpi_dump->dbuf == NULL))
rval = EINVAL;
else {
- qls_mpi_core_dump(ha);
- rval = copyout( &ql_mpi_coredump,
- mpi_dump->dbuf,
- mpi_dump->size);
+ if (qls_mpi_core_dump(ha) == 0) {
+ rval = copyout(&ql_mpi_coredump,
+ mpi_dump->dbuf,
+ mpi_dump->size);
+ } else
+ rval = ENXIO;
if (rval) {
device_printf(ha->pci_dev,
OpenPOWER on IntegriCloud