diff mbox series

scsi: target: tcmu: Return from tcmu_handle_completions if cmd_id not found

Message ID 20210423150123.24468-1-bostroesser@gmail.com (mailing list archive)
State Accepted
Commit 9814b55cde0588b6d9bc496cee43f87316cbc6f1
Headers show
Series scsi: target: tcmu: Return from tcmu_handle_completions if cmd_id not found | expand

Commit Message

Bodo Stroesser April 23, 2021, 3:01 p.m. UTC
If tcmu_handle_completions finds an invalid cmd_id while looping
over cmd responses from userspace, it sets TCMU_DEV_BIT_BROKEN
and breaks the loop, which means that it does further handling
for the tcmu device.

Skip that handling by replacing 'break' with 'return'.

Additionally change tcmu_handle_completions from unsigned int to
bool, since the value used in return already is bool.

Signed-off-by: Bodo Stroesser <bostroesser@gmail.com>
---
 drivers/target/target_core_user.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Martin K. Petersen April 29, 2021, 3:18 a.m. UTC | #1
On Fri, 23 Apr 2021 17:01:23 +0200, Bodo Stroesser wrote:

> If tcmu_handle_completions finds an invalid cmd_id while looping
> over cmd responses from userspace, it sets TCMU_DEV_BIT_BROKEN
> and breaks the loop, which means that it does further handling
> for the tcmu device.
> 
> Skip that handling by replacing 'break' with 'return'.
> 
> [...]

Applied to 5.13/scsi-fixes, thanks!

[1/1] scsi: target: tcmu: Return from tcmu_handle_completions if cmd_id not found
      https://git.kernel.org/mkp/scsi/c/9814b55cde05
diff mbox series

Patch

diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c
index eec2fd573e2b..198d25ae482a 100644
--- a/drivers/target/target_core_user.c
+++ b/drivers/target/target_core_user.c
@@ -1413,7 +1413,7 @@  static int tcmu_run_tmr_queue(struct tcmu_dev *udev)
 	return 1;
 }
 
-static unsigned int tcmu_handle_completions(struct tcmu_dev *udev)
+static bool tcmu_handle_completions(struct tcmu_dev *udev)
 {
 	struct tcmu_mailbox *mb;
 	struct tcmu_cmd *cmd;
@@ -1456,7 +1456,7 @@  static unsigned int tcmu_handle_completions(struct tcmu_dev *udev)
 			pr_err("cmd_id %u not found, ring is broken\n",
 			       entry->hdr.cmd_id);
 			set_bit(TCMU_DEV_BIT_BROKEN, &udev->flags);
-			break;
+			return false;
 		}
 
 		tcmu_handle_completion(cmd, entry);