aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorJim Harris <jimharris@FreeBSD.org>2013-07-24 22:40:34 +0000
committerJim Harris <jimharris@FreeBSD.org>2013-07-24 22:40:34 +0000
commit29b5ff11d51ffa5bc83dc8098c34910cb43bfb46 (patch)
treea407e79c44893b01c638a296576b3d0cea3c0cb4 /sys/dev
parent0d0aca3c369dc7da7d7a0ecf62057cf79ba197a1 (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/nvd/nvd.c8
-rw-r--r--sys/dev/nvme/nvme.h10
2 files changed, 13 insertions, 5 deletions
diff --git a/sys/dev/nvd/nvd.c b/sys/dev/nvd/nvd.c
index 1d2d8919d238..868a238301dc 100644
--- a/sys/dev/nvd/nvd.c
+++ b/sys/dev/nvd/nvd.c
@@ -306,12 +306,16 @@ nvd_new_disk(struct nvme_namespace *ns, void *ctrlr_arg)
disk->d_flags |= DISKFLAG_UNMAPPED_BIO;
#endif
+ /*
+ * d_ident and d_descr are both far bigger than the length of either
+ * the serial or model number strings.
+ */
strlcpy(disk->d_ident, nvme_ns_get_serial_number(ns),
- sizeof(disk->d_ident));
+ min(sizeof(disk->d_ident), NVME_SERIAL_NUMBER_LENGTH));
#if __FreeBSD_version >= 900034
strlcpy(disk->d_descr, nvme_ns_get_model_number(ns),
- sizeof(disk->d_descr));
+ min(sizeof(disk->d_descr), NVME_MODEL_NUMBER_LENGTH));
#endif
disk_create(disk, DISK_VERSION);
diff --git a/sys/dev/nvme/nvme.h b/sys/dev/nvme/nvme.h
index df409cc7cfb3..f30505a7bc8f 100644
--- a/sys/dev/nvme/nvme.h
+++ b/sys/dev/nvme/nvme.h
@@ -389,6 +389,10 @@ enum nvme_activate_action {
NVME_AA_ACTIVATE = 0x2,
};
+#define NVME_SERIAL_NUMBER_LENGTH 20
+#define NVME_MODEL_NUMBER_LENGTH 40
+#define NVME_FIRMWARE_REVISION_LENGTH 8
+
struct nvme_controller_data {
/* bytes 0-255: controller capabilities and features */
@@ -400,13 +404,13 @@ struct nvme_controller_data {
uint16_t ssvid;
/** serial number */
- int8_t sn[20];
+ int8_t sn[NVME_SERIAL_NUMBER_LENGTH];
/** model number */
- int8_t mn[40];
+ int8_t mn[NVME_MODEL_NUMBER_LENGTH];
/** firmware revision */
- uint8_t fr[8];
+ uint8_t fr[NVME_FIRMWARE_REVISION_LENGTH];
/** recommended arbitration burst */
uint8_t rab;