]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
scsi: target: Fix NULL pointer dereference in core_scsi3_decode_spec_i_port()
authorMaurizio Lombardi <mlombard@redhat.com>
Thu, 12 Jun 2025 10:15:56 +0000 (12:15 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Mon, 16 Jun 2025 18:35:57 +0000 (14:35 -0400)
The function core_scsi3_decode_spec_i_port(), in its error code path,
unconditionally calls core_scsi3_lunacl_undepend_item() passing the
dest_se_deve pointer, which may be NULL.

This can lead to a NULL pointer dereference if dest_se_deve remains
unset.

SPC-3 PR SPEC_I_PT: Unable to locate dest_tpg
Unable to handle kernel paging request at virtual address dfff800000000012
Call trace:
  core_scsi3_lunacl_undepend_item+0x2c/0xf0 [target_core_mod] (P)
  core_scsi3_decode_spec_i_port+0x120c/0x1c30 [target_core_mod]
  core_scsi3_emulate_pro_register+0x6b8/0xcd8 [target_core_mod]
  target_scsi3_emulate_pr_out+0x56c/0x840 [target_core_mod]

Fix this by adding a NULL check before calling
core_scsi3_lunacl_undepend_item()

Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
Link: https://lore.kernel.org/r/20250612101556.24829-1-mlombard@redhat.com
Reviewed-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Meneghini <jmeneghi@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/target_core_pr.c

index 34cf2c399b399d1e7e492839023028196f49f587..70905805cb1756381e44b4be90c5825a9cf9f3f4 100644 (file)
@@ -1842,7 +1842,9 @@ out:
                }
 
                kmem_cache_free(t10_pr_reg_cache, dest_pr_reg);
-               core_scsi3_lunacl_undepend_item(dest_se_deve);
+
+               if (dest_se_deve)
+                       core_scsi3_lunacl_undepend_item(dest_se_deve);
 
                if (is_local)
                        continue;