lkdtm: replace SCSI_DISPATCH_CMD with SCSI_QUEUE_RQ
authorKevin Mitchell <kevmitch@arista.com>
Thu, 19 Aug 2021 02:29:39 +0000 (19:29 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Sep 2021 07:50:42 +0000 (09:50 +0200)
[ Upstream commit d1f278da6b11585f05b2755adfc8851cbf14a1ec ]

When scsi_dispatch_cmd was moved to scsi_lib.c and made static, some
compilers (i.e., at least gcc 8.4.0) decided to compile this
inline. This is a problem for lkdtm.ko, which inserted a kprobe
on this function for the SCSI_DISPATCH_CMD crashpoint.

Move this crashpoint one function up the call chain to
scsi_queue_rq. Though this is also a static function, it should never be
inlined because it is assigned as a structure entry. Therefore,
kprobe_register should always be able to find it.

Fixes: 82042a2cdb55 ("scsi: move scsi_dispatch_cmd to scsi_lib.c")
Acked-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Kevin Mitchell <kevmitch@arista.com>
Link: https://lore.kernel.org/r/20210819022940.561875-2-kevmitch@arista.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Documentation/fault-injection/provoke-crashes.rst
drivers/misc/lkdtm/core.c

index a20ba5d..18de173 100644 (file)
@@ -29,7 +29,7 @@ recur_count
 cpoint_name
        Where in the kernel to trigger the action. It can be
        one of INT_HARDWARE_ENTRY, INT_HW_IRQ_EN, INT_TASKLET_ENTRY,
-       FS_DEVRW, MEM_SWAPOUT, TIMERADD, SCSI_DISPATCH_CMD,
+       FS_DEVRW, MEM_SWAPOUT, TIMERADD, SCSI_QUEUE_RQ,
        IDE_CORE_CP, or DIRECT
 
 cpoint_type
index c802db9..32b3d77 100644 (file)
@@ -81,7 +81,7 @@ static struct crashpoint crashpoints[] = {
        CRASHPOINT("FS_DEVRW",           "ll_rw_block"),
        CRASHPOINT("MEM_SWAPOUT",        "shrink_inactive_list"),
        CRASHPOINT("TIMERADD",           "hrtimer_start"),
-       CRASHPOINT("SCSI_DISPATCH_CMD",  "scsi_dispatch_cmd"),
+       CRASHPOINT("SCSI_QUEUE_RQ",      "scsi_queue_rq"),
        CRASHPOINT("IDE_CORE_CP",        "generic_ide_ioctl"),
 #endif
 };