diff --git a/util/logging.c b/util/logging.c index c26d9e228e..8a39bbac49 100644 --- a/util/logging.c +++ b/util/logging.c @@ -2,6 +2,7 @@ #include +#include #include #include #include @@ -104,8 +105,14 @@ int nvme_submit_passthru(int fd, unsigned long ioctl_cmd, nvme_show_latency(start, end); } - if (err >= 0 && result) - *result = cmd->result; + if (err >= 0) { + if (result) + *result = cmd->result; + if (cmd->result) { + errno = EPROTO; + err = -1; + } + } return err; } @@ -131,8 +138,14 @@ int nvme_submit_passthru64(int fd, unsigned long ioctl_cmd, nvme_show_latency(start, end); } - if (err >= 0 && result) - *result = cmd->result; + if (err >= 0) { + if (result) + *result = cmd->result; + if (cmd->result) { + errno = EPROTO; + err = -1; + } + } return err; }