Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F148277498
D24532.id71215.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D24532.id71215.diff
View Options
Index: sys/dev/nvme/nvme.c
===================================================================
--- sys/dev/nvme/nvme.c
+++ sys/dev/nvme/nvme.c
@@ -138,7 +138,8 @@
ctrlr->config_hook.ich_func = nvme_ctrlr_start_config_hook;
ctrlr->config_hook.ich_arg = ctrlr;
- config_intrhook_establish(&ctrlr->config_hook);
+ if (config_intrhook_establish(&ctrlr->config_hook) != 0)
+ return (ENOMEM);
return (0);
}
Index: sys/dev/nvme/nvme_ctrlr.c
===================================================================
--- sys/dev/nvme/nvme_ctrlr.c
+++ sys/dev/nvme/nvme_ctrlr.c
@@ -1299,6 +1299,7 @@
struct nvme_get_nsid *gnsid = (struct nvme_get_nsid *)arg;
strncpy(gnsid->cdev, device_get_nameunit(ctrlr->dev),
sizeof(gnsid->cdev));
+ gnsid[sizeof(gnsid->cdev - 1] = '\0';
gnsid->nsid = 0;
break;
}
@@ -1583,12 +1584,12 @@
goto fail;
/*
- * Now that we're reset the hardware, we can restart the controller. Any
+ * Now that we've reset the hardware, we can restart the controller. Any
* I/O that was pending is requeued. Any admin commands are aborted with
* an error. Once we've restarted, take the controller out of reset.
*/
nvme_ctrlr_start(ctrlr, true);
- atomic_cmpset_32(&ctrlr->is_resetting, 1, 0);
+ (void)atomic_cmpset_32(&ctrlr->is_resetting, 1, 0);
return (0);
fail:
@@ -1599,6 +1600,6 @@
*/
nvme_printf(ctrlr, "Failed to reset on resume, failing.\n");
nvme_ctrlr_fail(ctrlr);
- atomic_cmpset_32(&ctrlr->is_resetting, 1, 0);
+ (void)atomic_cmpset_32(&ctrlr->is_resetting, 1, 0);
return (0);
}
Index: sys/dev/nvme/nvme_ns.c
===================================================================
--- sys/dev/nvme/nvme_ns.c
+++ sys/dev/nvme/nvme_ns.c
@@ -87,6 +87,7 @@
struct nvme_get_nsid *gnsid = (struct nvme_get_nsid *)arg;
strncpy(gnsid->cdev, device_get_nameunit(ctrlr->dev),
sizeof(gnsid->cdev));
+ gnsid[sizeof(gnsid->cdev - 1] = '\0';
gnsid->nsid = ns->id;
break;
}
Index: sys/dev/nvme/nvme_pci.c
===================================================================
--- sys/dev/nvme/nvme_pci.c
+++ sys/dev/nvme/nvme_pci.c
@@ -243,11 +243,9 @@
return (ENOMEM);
}
- bus_setup_intr(ctrlr->dev, ctrlr->res,
+ if (bus_setup_intr(ctrlr->dev, ctrlr->res,
INTR_TYPE_MISC | INTR_MPSAFE, NULL, nvme_ctrlr_intx_handler,
- ctrlr, &ctrlr->tag);
-
- if (ctrlr->tag == NULL) {
+ ctrlr, &ctrlr->tag) != 0) {
nvme_printf(ctrlr, "unable to setup intx handler\n");
return (ENOMEM);
}
Index: sys/dev/nvme/nvme_qpair.c
===================================================================
--- sys/dev/nvme/nvme_qpair.c
+++ sys/dev/nvme/nvme_qpair.c
@@ -671,9 +671,12 @@
qpair->res = bus_alloc_resource_any(ctrlr->dev, SYS_RES_IRQ,
&qpair->rid, RF_ACTIVE);
- bus_setup_intr(ctrlr->dev, qpair->res,
+ if (bus_setup_intr(ctrlr->dev, qpair->res,
INTR_TYPE_MISC | INTR_MPSAFE, NULL,
- nvme_qpair_msix_handler, qpair, &qpair->tag);
+ nvme_qpair_msix_handler, qpair, &qpair->tag) != 0) {
+ nvme_printf(ctrlr, "unable to setup intx handler\n");
+ goto out;
+ }
if (qpair->id == 0) {
bus_describe_intr(ctrlr->dev, qpair->res, qpair->tag,
"admin");
Index: sys/dev/nvme/nvme_sysctl.c
===================================================================
--- sys/dev/nvme/nvme_sysctl.c
+++ sys/dev/nvme/nvme_sysctl.c
@@ -146,16 +146,17 @@
nvme_sysctl_timeout_period(SYSCTL_HANDLER_ARGS)
{
struct nvme_controller *ctrlr = arg1;
- uint32_t oldval = ctrlr->timeout_period;
- int error = sysctl_handle_int(oidp, &ctrlr->timeout_period, 0, req);
+ uint32_t newval= 0;
+ int error = sysctl_handle_int(oidp, &newval, 0, req);
if (error)
return (error);
- if (ctrlr->timeout_period > NVME_MAX_TIMEOUT_PERIOD ||
- ctrlr->timeout_period < NVME_MIN_TIMEOUT_PERIOD) {
- ctrlr->timeout_period = oldval;
+ if (newval > NVME_MAX_TIMEOUT_PERIOD ||
+ newval < NVME_MIN_TIMEOUT_PERIOD) {
return (EINVAL);
+ } else {
+ ctrlr->timeout_period = newval;
}
return (0);
Index: sys/dev/nvme/nvme_test.c
===================================================================
--- sys/dev/nvme/nvme_test.c
+++ sys/dev/nvme/nvme_test.c
@@ -100,7 +100,7 @@
idx = atomic_fetchadd_int(&io_test->td_idx, 1);
dev = io_test->ns->cdev;
- offset = idx * 2048 * nvme_ns_get_sector_size(io_test->ns);
+ offset = (uint64_t)idx * 2048 * nvme_ns_get_sector_size(io_test->ns);
while (1) {
@@ -120,9 +120,14 @@
} else
csw = dev->si_devsw;
+ if (csw == NULL)
+ panic("Unable to retrieve device switch");
mtx = mtx_pool_find(mtxpool_sleep, bio);
mtx_lock(mtx);
- (*csw->d_strategy)(bio);
+ if (csw != NULL)
+ (*csw->d_strategy)(bio);
+ else
+ biofinish(bio, NULL, ENXIO);
msleep(bio, mtx, PRIBIO, "biotestwait", 0);
mtx_unlock(mtx);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Mar 17, 11:15 PM (11 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29853525
Default Alt Text
D24532.id71215.diff (4 KB)
Attached To
Mode
D24532: Fix various Coverity-detected errors in nvme driver
Attached
Detach File
Event Timeline
Log In to Comment