diff options
Diffstat (limited to '')
-rw-r--r-- | nvme-rpmb.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/nvme-rpmb.c b/nvme-rpmb.c index 8f6e6a0..40ddb5b 100644 --- a/nvme-rpmb.c +++ b/nvme-rpmb.c @@ -872,8 +872,9 @@ int rpmb_cmd_option(int argc, char **argv, struct command *cmd, struct plugin *p unsigned char *msg_buf = NULL; unsigned int msg_size = 0; unsigned int key_size = 0; - int fd = -1, err = -1; struct nvme_id_ctrl ctrl; + struct nvme_dev *dev; + int err = -1; union ctrl_rpmbs_reg { struct { @@ -886,11 +887,11 @@ int rpmb_cmd_option(int argc, char **argv, struct command *cmd, struct plugin *p unsigned int rpmbs; } regs; - if ((fd = parse_and_open(argc, argv, desc, opts)) < 0) - return fd; + if ((err = parse_and_open(&dev, argc, argv, desc, opts))) + return err; /* before parsing commands, check if controller supports any RPMB targets */ - err = nvme_identify_ctrl(fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (err) goto out; @@ -959,13 +960,15 @@ int rpmb_cmd_option(int argc, char **argv, struct command *cmd, struct plugin *p switch (cfg.opt) { case RPMB_REQ_READ_WRITE_CNTR: - err = rpmb_read_write_counter(fd, cfg.target, &write_cntr); + err = rpmb_read_write_counter(dev_fd(dev), cfg.target, + &write_cntr); if (err == 0) printf("Write Counter is: %u\n", write_cntr); break; case RPMB_REQ_AUTH_DCB_READ: - write_cntr = rpmb_read_config_block(fd, &msg_buf); + write_cntr = rpmb_read_config_block(dev_fd(dev), + &msg_buf); if (msg_buf == NULL) { fprintf(stderr, "failed read config blk\n"); goto out; @@ -997,8 +1000,9 @@ int rpmb_cmd_option(int argc, char **argv, struct command *cmd, struct plugin *p msg_size); break; } - err = rpmb_auth_data_read(fd, cfg.target, cfg.address, - &msg_buf, cfg.blocks, + err = rpmb_auth_data_read(dev_fd(dev), cfg.target, + cfg.address, &msg_buf, + cfg.blocks, (regs.access_size + 1)); if (err > 0 && msg_buf != NULL) { printf("Writting %d bytes to file %s\n", @@ -1017,7 +1021,8 @@ int rpmb_cmd_option(int argc, char **argv, struct command *cmd, struct plugin *p } else if ((cfg.blocks * 512) < msg_size) { msg_size = cfg.blocks * 512; } - err = rpmb_auth_data_write(fd, cfg.target, cfg.address, + err = rpmb_auth_data_write(dev_fd(dev), cfg.target, + cfg.address, ((regs.access_size + 1) * 512), msg_buf, msg_size, key_buf, key_size); @@ -1028,11 +1033,13 @@ int rpmb_cmd_option(int argc, char **argv, struct command *cmd, struct plugin *p break; case RPMB_REQ_AUTH_DCB_WRITE: - err = rpmb_write_config_block(fd, msg_buf, key_buf, key_size); + err = rpmb_write_config_block(dev_fd(dev), msg_buf, + key_buf, key_size); break; case RPMB_REQ_AUTH_KEY_PROGRAM: - err = rpmb_program_auth_key(fd, cfg.target, key_buf, key_size); + err = rpmb_program_auth_key(dev_fd(dev), cfg.target, + key_buf, key_size); break; default: break; @@ -1043,8 +1050,8 @@ out: free(key_buf); free(msg_buf); - /* close file descriptor */ - close(fd); + /* close device */ + dev_close(dev); return err; } |