]> Git Repo - J-linux.git/commitdiff
scsi: scsi_debug: Allocate the MODE SENSE response from the heap
authorBart Van Assche <[email protected]>
Tue, 30 Jan 2024 21:48:42 +0000 (13:48 -0800)
committerMartin K. Petersen <[email protected]>
Tue, 27 Feb 2024 02:37:26 +0000 (21:37 -0500)
Make the MODE SENSE response buffer larger and allocate it from the heap.
This patch prepares for adding support for the IO Advice Hints Grouping
mode page.

Suggested-by: Douglas Gilbert <[email protected]>
Cc: Douglas Gilbert <[email protected]>
Tested-by: Douglas Gilbert <[email protected]>
Signed-off-by: Bart Van Assche <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Martin K. Petersen <[email protected]>
drivers/scsi/scsi_debug.c

index 67a8e6243e5e2976ad2900c8b7801af2c1c7827b..b544498324f6ca81643743d96fb8b9348bae3cc8 100644 (file)
@@ -43,6 +43,7 @@
 #include <linux/prefetch.h>
 #include <linux/debugfs.h>
 #include <linux/async.h>
+#include <linux/cleanup.h>
 
 #include <net/checksum.h>
 
@@ -2631,7 +2632,8 @@ static int resp_sas_sha_m_spg(unsigned char *p, int pcontrol)
        return sizeof(sas_sha_m_pg);
 }
 
-#define SDEBUG_MAX_MSENSE_SZ 256
+/* PAGE_SIZE is more than necessary but provides room for future expansion. */
+#define SDEBUG_MAX_MSENSE_SZ PAGE_SIZE
 
 static int resp_mode_sense(struct scsi_cmnd *scp,
                           struct sdebug_dev_info *devip)
@@ -2642,10 +2644,13 @@ static int resp_mode_sense(struct scsi_cmnd *scp,
        int target_dev_id;
        int target = scp->device->id;
        unsigned char *ap;
-       unsigned char arr[SDEBUG_MAX_MSENSE_SZ];
+       unsigned char *arr __free(kfree);
        unsigned char *cmd = scp->cmnd;
        bool dbd, llbaa, msense_6, is_disk, is_zbc;
 
+       arr = kzalloc(SDEBUG_MAX_MSENSE_SZ, GFP_ATOMIC);
+       if (!arr)
+               return -ENOMEM;
        dbd = !!(cmd[1] & 0x8);         /* disable block descriptors */
        pcontrol = (cmd[2] & 0xc0) >> 6;
        pcode = cmd[2] & 0x3f;
This page took 0.059667 seconds and 4 git commands to generate.