Message ID | 20210819022940.561875-2-kevmitch@arista.com |
---|---|
State | New |
Headers | show |
Series | lkdtm: update block layer crashpoints | expand |
On Wed, Aug 18, 2021 at 07:29:39PM -0700, Kevin Mitchell wrote: > 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") > Signed-off-by: Kevin Mitchell <kevmitch@arista.com> Thanks! Acked-by: Kees Cook <keescook@chromium.org> -Kees > --- > Documentation/fault-injection/provoke-crashes.rst | 2 +- > drivers/misc/lkdtm/core.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/Documentation/fault-injection/provoke-crashes.rst b/Documentation/fault-injection/provoke-crashes.rst > index a20ba5d93932..18de17354206 100644 > --- a/Documentation/fault-injection/provoke-crashes.rst > +++ b/Documentation/fault-injection/provoke-crashes.rst > @@ -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 > diff --git a/drivers/misc/lkdtm/core.c b/drivers/misc/lkdtm/core.c > index 9dda87c6b54a..016cb0b150fc 100644 > --- a/drivers/misc/lkdtm/core.c > +++ b/drivers/misc/lkdtm/core.c > @@ -82,7 +82,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 > }; > -- > 2.32.0 >
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/Documentation/fault-injection/provoke-crashes.rst b/Documentation/fault-injection/provoke-crashes.rst index a20ba5d93932..18de17354206 100644 --- a/Documentation/fault-injection/provoke-crashes.rst +++ b/Documentation/fault-injection/provoke-crashes.rst @@ -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 diff --git a/drivers/misc/lkdtm/core.c b/drivers/misc/lkdtm/core.c index 9dda87c6b54a..016cb0b150fc 100644 --- a/drivers/misc/lkdtm/core.c +++ b/drivers/misc/lkdtm/core.c @@ -82,7 +82,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 };
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") Signed-off-by: Kevin Mitchell <kevmitch@arista.com> --- Documentation/fault-injection/provoke-crashes.rst | 2 +- drivers/misc/lkdtm/core.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)