diff options
| author | Jim Harris <jimharris@FreeBSD.org> | 2013-07-24 22:40:34 +0000 |
|---|---|---|
| committer | Jim Harris <jimharris@FreeBSD.org> | 2013-07-24 22:40:34 +0000 |
| commit | 29b5ff11d51ffa5bc83dc8098c34910cb43bfb46 (patch) | |
| tree | a407e79c44893b01c638a296576b3d0cea3c0cb4 | |
| parent | 0d0aca3c369dc7da7d7a0ecf62057cf79ba197a1 (diff) | |
Notes
| -rw-r--r-- | sbin/nvmecontrol/devlist.c | 2 | ||||
| -rw-r--r-- | sbin/nvmecontrol/identify.c | 9 | ||||
| -rw-r--r-- | sys/dev/nvd/nvd.c | 8 | ||||
| -rw-r--r-- | sys/dev/nvme/nvme.h | 10 |
4 files changed, 20 insertions, 9 deletions
diff --git a/sbin/nvmecontrol/devlist.c b/sbin/nvmecontrol/devlist.c index 2e81e761778e..2a9583294673 100644 --- a/sbin/nvmecontrol/devlist.c +++ b/sbin/nvmecontrol/devlist.c @@ -90,7 +90,7 @@ devlist(int argc, char *argv[]) found++; read_controller_data(fd, &cdata); - printf("%6s: %s\n", name, cdata.mn); + printf("%6s: %.*s\n", name, NVME_MODEL_NUMBER_LENGTH, cdata.mn); for (i = 0; i < cdata.nn; i++) { sprintf(name, "%s%d%s%d", NVME_CTRLR_PREFIX, ctrlr, diff --git a/sbin/nvmecontrol/identify.c b/sbin/nvmecontrol/identify.c index 7cc499c031e6..65854303566b 100644 --- a/sbin/nvmecontrol/identify.c +++ b/sbin/nvmecontrol/identify.c @@ -47,9 +47,12 @@ print_controller(struct nvme_controller_data *cdata) printf("================================\n"); printf("Vendor ID: %04x\n", cdata->vid); printf("Subsystem Vendor ID: %04x\n", cdata->ssvid); - printf("Serial Number: %s\n", cdata->sn); - printf("Model Number: %s\n", cdata->mn); - printf("Firmware Version: %s\n", cdata->fr); + printf("Serial Number: %.*s\n", + NVME_SERIAL_NUMBER_LENGTH, cdata->sn); + printf("Model Number: %.*s\n", + NVME_MODEL_NUMBER_LENGTH, cdata->mn); + printf("Firmware Version: %.*s\n", + NVME_FIRMWARE_REVISION_LENGTH, cdata->fr); printf("Recommended Arb Burst: %d\n", cdata->rab); printf("IEEE OUI Identifier: %02x %02x %02x\n", cdata->ieee[0], cdata->ieee[1], cdata->ieee[2]); 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; |
