summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLogan Gunthorpe <logang@deltatee.com>2019-07-31 17:35:33 -0600
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-09-06 10:23:15 +0200
commita7b13f9b376d37198c42cc0c67add071a7c0e91a (patch)
treebf8543ca5032e07302bf8b695183d91953fdfac1
parent938f8292e9ef1ed1ba46965d0e75f160a91b76b5 (diff)
downloadlinux-stable-a7b13f9b376d37198c42cc0c67add071a7c0e91a.tar.gz
linux-stable-a7b13f9b376d37198c42cc0c67add071a7c0e91a.tar.bz2
linux-stable-a7b13f9b376d37198c42cc0c67add071a7c0e91a.zip
nvmet-file: fix nvmet_file_flush() always returning an error
[ Upstream commit cfc1a1af56200362d1508b82b9a3cc3acb2eae0c ] Presently, nvmet_file_flush() always returns a call to errno_to_nvme_status() but that helper doesn't take into account the case when errno=0. So nvmet_file_flush() always returns an error code. All other callers of errno_to_nvme_status() check for success before calling it. To fix this, ensure errno_to_nvme_status() returns success if the errno is zero. This should prevent future mistakes like this from happening. Fixes: c6aa3542e010 ("nvmet: add error log support for file backend") Signed-off-by: Logan Gunthorpe <logang@deltatee.com> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/nvme/target/core.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
index e4db9a441168..396cbc7ea353 100644
--- a/drivers/nvme/target/core.c
+++ b/drivers/nvme/target/core.c
@@ -43,6 +43,9 @@ inline u16 errno_to_nvme_status(struct nvmet_req *req, int errno)
u16 status;
switch (errno) {
+ case 0:
+ status = NVME_SC_SUCCESS;
+ break;
case -ENOSPC:
req->error_loc = offsetof(struct nvme_rw_command, length);
status = NVME_SC_CAP_EXCEEDED | NVME_SC_DNR;