All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] scsi: target: iblock: Fix wrong PR ops NULL check for PREEMPT/RELEASE
@ 2026-07-24  7:58 kensanya
  2026-07-24  8:12 ` sashiko-bot
  0 siblings, 1 reply; 2+ messages in thread
From: kensanya @ 2026-07-24  7:58 UTC (permalink / raw)
  To: Martin K . Petersen
  Cc: Hannes Reinecke, Mike Christie, linux-scsi, target-devel,
	TanZheng

From: TanZheng <tanzheng@kylinos.cn>

In the iblock_execute_pr_out function, PRO_PREEMPT, PRO_PREEMPT_AND_ABORT
and PRO_RELEASE all perform callback capability checks through
ops->pr_clear. The error check allows unimplemented hooks to pass through
the gate, resulting  dereferencing a NULL function pointer.

Check whether the hooks that need to be called are supported.

Fixes: 394f81184882 ("scsi: target: Add block PR support to iblock")
Signed-off-by: TanZheng <tanzheng@kylinos.cn>
---
 drivers/target/target_core_iblock.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/target/target_core_iblock.c b/drivers/target/target_core_iblock.c
index 1087d1d17c36..ea65d39fef88 100644
--- a/drivers/target/target_core_iblock.c
+++ b/drivers/target/target_core_iblock.c
@@ -906,7 +906,7 @@ static sense_reason_t iblock_execute_pr_out(struct se_cmd *cmd, u8 sa, u64 key,
 		break;
 	case PRO_PREEMPT:
 	case PRO_PREEMPT_AND_ABORT:
-		if (!ops->pr_clear) {
+		if (!ops->pr_preempt) {
 			pr_err("block_device does not support pr_preempt.\n");
 			return TCM_UNSUPPORTED_SCSI_OPCODE;
 		}
@@ -916,8 +916,8 @@ static sense_reason_t iblock_execute_pr_out(struct se_cmd *cmd, u8 sa, u64 key,
 				      sa == PRO_PREEMPT_AND_ABORT);
 		break;
 	case PRO_RELEASE:
-		if (!ops->pr_clear) {
-			pr_err("block_device does not support pr_pclear.\n");
+		if (!ops->pr_release) {
+			pr_err("block_device does not support pr_release.\n");
 			return TCM_UNSUPPORTED_SCSI_OPCODE;
 		}
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] scsi: target: iblock: Fix wrong PR ops NULL check for PREEMPT/RELEASE
  2026-07-24  7:58 [PATCH] scsi: target: iblock: Fix wrong PR ops NULL check for PREEMPT/RELEASE kensanya
@ 2026-07-24  8:12 ` sashiko-bot
  0 siblings, 0 replies; 2+ messages in thread
From: sashiko-bot @ 2026-07-24  8:12 UTC (permalink / raw)
  To: kensanya; +Cc: linux-scsi

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] Un-ratelimited error logging can be abused by an initiator to flood the kernel log.
--

--- Patch [1]: [PATCH] scsi: target: iblock: Fix wrong PR ops NULL check for PREEMPT/RELEASE ---
commit 562d965ef4dd6b2eb1b1b38dac4b060b92e2df13
Author: TanZheng <tanzheng@kylinos.cn>

scsi: target: iblock: Fix wrong PR ops NULL check for PREEMPT/RELEASE
    
This commit corrects a bug in the iblock_execute_pr_out function where the
pr_clear callback was being checked instead of the corresponding pr_preempt
and pr_release callbacks. This fixes a potential NULL pointer dereference
if those specific PR ops are unimplemented.

> --- a/drivers/target/target_core_iblock.c
> +++ b/drivers/target/target_core_iblock.c
> @@ -906,7 +906,7 @@ static sense_reason_t iblock_execute_pr_out(struct se_cmd *cmd, u8 sa, u64 key,
>  		break;
>  	case PRO_PREEMPT:
>  	case PRO_PREEMPT_AND_ABORT:
> -		if (!ops->pr_clear) {
> +		if (!ops->pr_preempt) {
>  			pr_err("block_device does not support pr_preempt.\n");

[Severity: High]
This is a pre-existing issue, but could this un-ratelimited error logging be
abused by a remote initiator to flood the kernel log?

If a malicious or misbehaving SCSI initiator repeatedly sends PR OUT commands
with unsupported operations, it will hit this pr_err() at a high frequency.
This could flood the dmesg buffer, hide other critical messages, and
potentially cause resource exhaustion.

This same pattern exists throughout iblock_execute_pr_out, including the
default switch case for unknown Service Actions:

    default:
        pr_err("Unknown PERSISTENT_RESERVE_OUT SA: 0x%02x\n", sa);
        return TCM_UNSUPPORTED_SCSI_OPCODE;

Would it be safer to use pr_err_ratelimited() for these initiator-triggerable
errors?

>  			return TCM_UNSUPPORTED_SCSI_OPCODE;
>  		}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260724075850.280699-1-kensanya@163.com?part=1

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-07-24  8:12 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-24  7:58 [PATCH] scsi: target: iblock: Fix wrong PR ops NULL check for PREEMPT/RELEASE kensanya
2026-07-24  8:12 ` sashiko-bot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.