Skip to content

Commits

Permalink
Mike-Christie/…
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Commits on Feb 24, 2023

  1. scsi: target: Add block PR support to iblock

    This adds support for the block PR callouts to target_core_iblock. This
    patch doesn't attempt to implement the entire spec because there's no way
    support it all like SPEC_I_PT and ALL_TG_PT. This only supports
    exporting the iblock device from one path on the local target.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    d2d33ea View commit details
    Browse the repository at this point in the history
  2. scsi: target: Report and detect unsupported PR commands

    The backend modules don't know about ports and I_T nexuses and the pr_ops
    callouts the modules will use don't support the old RESERVE/RELEASE
    commands. This patch has us report we don't support those types of
    commands and fail them.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    87c818d View commit details
    Browse the repository at this point in the history
  3. scsi: target: Pass struct target_opcode_descriptor to enabled

    The iblock pr_ops support does not support commands that require port or
    I_T Nexus info. This adds a struct target_opcode_descriptor as an argument
    to the enabled callout so we can still have the common tcm_is_pr_enabled
    and tcm_is_scsi2_reservations_enabled functions and also determine if the
    command is supported based on the command and service action and device
    settings.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    3365044 View commit details
    Browse the repository at this point in the history
  4. scsi: target: Allow backends to hook into PR handling

    For the cases where you want to export a device to a VM via a single
    I_T nexus and want to passthrough the PR handling to the physical/real
    device you have to use pscsi or tcmu. Both are good for specific uses
    however for the case where you want good performance, and are not using
    SCSI devices directly (using DM/MD RAID or multipath devices) then we are
    out of luck.
    
    The following patches allow iblock to mimimally hook into the LIO PR code
    and then pass the PR handling to the physical device. Note that like with
    the tcmu an pscsi cases it's only supported when you export the device via
    one I_T nexus.
    
    This patch adds the initial LIO callouts. The next patch will modify
    iblock.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    105d3da View commit details
    Browse the repository at this point in the history
  5. scsi: target: Rename sbc_ops to exec_cmd_ops

    The next patches allow us to call the block layer's pr_ops from the
    backends. This will require allowing the backends to hook into the cmd
    processing for SPC commands, so this renames sbc_ops to a more generic
    exec_cmd_ops.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    ec5c3d3 View commit details
    Browse the repository at this point in the history
  6. nvme: Add pr_ops read_reservation support

    This patch adds support for the pr_ops read_reservation callout by
    calling the NVMe Reservation Report helper. It then parses that info to
    detect if there is a reservation and if there is then convert the
    returned info to a pr_ops pr_held_reservation struct.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    f66174e View commit details
    Browse the repository at this point in the history
  7. nvme: Add a nvme_pr_type enum

    The next patch adds support to report the reservation type, so we need to
    be able to convert from the NVMe PR value we get from the device to the
    linux block layer PR value that will be returned to callers. To prepare
    for that, this patch adds a nvme_pr_type enum and renames the nvme_pr_type
    function.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    f2d1b9c View commit details
    Browse the repository at this point in the history
  8. nvme: Add pr_ops read_keys support

    This patch adds support for the pr_ops read_keys callout by calling the
    NVMe Reservation Report helper, then parsing that info to get the
    controller's registered keys. Because the callout is only used in the
    kernel where the callers, like LIO, do not know about controller/host IDs,
    the callout just returns the registered keys which is required by the SCSI
    PR in READ KEYS command.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    355c116 View commit details
    Browse the repository at this point in the history
  9. nvme: Add helper to send pr command

    Move the code that checks for multipath support and sends the pr command
    to a new helper so it can be used by the reservation report support added
    in the next patches.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    cec5d64 View commit details
    Browse the repository at this point in the history
  10. nvme: Move pr code to it's own file

    This patch moves the pr code to it's own file because I'm going to be
    adding more functions and core.c is getting bigger.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    3cc8120 View commit details
    Browse the repository at this point in the history
  11. nvme: Don't hardcode the data len for pr commands

    Reservation Report support needs to pass in a variable sized buffer, so
    this patch has the pr command helpers take a data length argument.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    3f643f7 View commit details
    Browse the repository at this point in the history
  12. nvme: Fix reservation status related structs

    This fixes the following issues with the reservation status structs:
    
    1. resv10 is bytes 23:10 so it should be 14 bytes.
    2. regctl_ds only supports 64 bit host IDs.
    
    These are not currently used, but will be in this patchset which adds
    support for the reservation report command.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    da9a72c View commit details
    Browse the repository at this point in the history
  13. dm: Add support for block PR read keys/reservation

    This adds support in dm for the block PR read keys and read reservation
    callouts.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    5d56834 View commit details
    Browse the repository at this point in the history
  14. scsi: Add support for block PR read keys/reservation

    This adds support in sd.c for the block PR read keys and read reservation
    callouts, so upper layers like LIO can get the PR info that's been setup
    using the existing pr callouts and return it to initiators.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    aa1a765 View commit details
    Browse the repository at this point in the history
  15. scsi: Move sd_pr_type to header to share

    LIO is going to want to do the same block to/from SCSI pr types as sd.c
    so this moves the sd_pr_type helper to a new file. The next patch will
    then also add a helper to go from the SCSI value to the block one for use
    with PERSISTENT_RESERVE_IN commands.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    6cb9a48 View commit details
    Browse the repository at this point in the history
  16. scsi: Rename sd_pr_command

    Rename sd_pr_command to sd_pr_out_command to match a
    sd_pr_in_command helper added in the next patches.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    8ab8d56 View commit details
    Browse the repository at this point in the history
  17. block: Rename BLK_STS_NEXUS to BLK_STS_RESV_CONFLICT

    BLK_STS_NEXUS is used for NVMe/SCSI reservation conflicts or in dasd's
    case something similar. This renames BLK_STS_NEXUS so it better reflects
    this.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Cc: Stefan Haberland <sth@linux.ibm.com>
    Cc: Jan Hoeppner <hoeppner@linux.ibm.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    154ac04 View commit details
    Browse the repository at this point in the history
  18. block: Add PR callouts for read keys and reservation

    Add callouts for reading keys and reservations. This allows LIO to support
    the READ_KEYS and READ_RESERVATION commands and will allow dm-multipath
    to optimize it's error handling so it can check if it's getting an error
    because there's an existing reservation or if we need to retry different
    paths.
    
    Note: This only initially adds the struct definitions in the kernel as I'm
    not sure if we wanted to export the interface to userspace yet. read_keys
    and read_reservation are exactly what dm-multipath and LIO need, but for a
    userspace interface we may want something like SCSI's READ_FULL_STATUS and
    NVMe's report reservation commands. Those are overkill for dm/LIO and
    READ_FULL_STATUS is sometimes broken for SCSI devices.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    mikechristie authored and intel-lab-lkp committed Feb 24, 2023
    Copy the full SHA
    028288d View commit details
    Browse the repository at this point in the history

Commits on Feb 22, 2023

  1. scsi: zfcp: Trace when request remove fails after qdio send fails

    When we fail to send a FSF request in 'zfcp_fsf_req_send()' when calling
    'zfcp_qdio_send()' we try to remove the request object from our internal
    hash table again to prevent keeping a stale memory reference. This removal
    might still - very much theoretically - fail.
    
    To store some evidence of when this happens add a new trace record for
    this case; tag: 'fsrsrmf'.
    
    We reuse the 'ZFCP_DBF_HBA_RES' trace ID for this, but mark all fields
    other then the request ID with ~0, to make fairly obvious that these are
    invalid values. This faking has to be done because we don't have a valid
    request object at this point, and can not safely access any of the memory
    of the old object - we just failed to find it in our hash table, so it
    might be gone already.
    
    Here is an example of a decoded trace record:
    
        Timestamp      : 2023-02-17-13:09:12:748140
        Area           : HBA
        Subarea        : 1
        Level          : -
        Exception      : 000003ff7ff500c2
        CPU ID         : 0011
        Caller         : 0x0
        Record ID      : 1
        Tag            : fsrsrmf
        Request ID     : 0x0000000080126ab6
        Request status : 0xffffffff
        FSF cmnd       : 0xffffffff
        FSF sequence no: 0xffffffff
        FSF issued     : 2042-09-18-01:53:47:370495
        FSF stat       : 0xffffffff
        FSF stat qual  : ffffffff ffffffff ffffffff ffffffff
        Prot stat      : 0xffffffff
        Prot stat qual : ffffffff ffffffff ffffffff ffffffff
        Port handle    : 0xffffffff
        LUN handle     : 0xffffffff
    
    This provides at least some basic evidence that this event happened, and
    what object was affected.
    
    Link: https://lore.kernel.org/r/99b8246b2d71b63fa4f9c56333e2037502f7f5af.1677000450.git.bblock@linux.ibm.com
    Signed-off-by: Benjamin Block <bblock@linux.ibm.com>
    Reviewed-by: Steffen Maier <maier@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Benjamin-Block authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    901b894 View commit details
    Browse the repository at this point in the history
  2. scsi: zfcp: Change the type of all fsf request id fields and variable…

    …s to u64
    
    We use different integer types throughout zfcp to store the FSF request ID
    and related values; some places use 'unsigned long' and others 'u64'.  On
    s390x these are effectively the same type, but this might cause confusions
    and is generally inconsistent.
    
    The specification for the used hardware specifies this value as a 64-bit
    number, and ultimately we use this value to communicate with the hardware,
    so it makes sense to change the type of all these variables to 'u64' where
    we can.  The only exception being when we store it in the 'host_scribble'
    field of a 'struct scsi_cmnd'; for this case we add a build time check to
    make sure they are compatible.
    
    Link: https://lore.kernel.org/r/9c9cbe5acc2b419a22dce2fed847e3db91b60201.1677000450.git.bblock@linux.ibm.com
    Signed-off-by: Benjamin Block <bblock@linux.ibm.com>
    Reviewed-by: Steffen Maier <maier@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Benjamin-Block authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    3ab0181 View commit details
    Browse the repository at this point in the history
  3. scsi: zfcp: Make the type for accessing request hashtable buckets size_t

    The appropriate type for array indices is 'size_t' and the current
    implementation in 'zfcp_reqlist.h' mixes 'int' and 'unsigned int' in
    different places to access the hashtable buckets of our internal request
    hash table.
    
    To prevent any confusion, change all places to 'size_t'.
    
    Link: https://lore.kernel.org/r/64afe93f6263c6b07815937826cd7d5fc4f1a674.1677000450.git.bblock@linux.ibm.com
    Signed-off-by: Benjamin Block <bblock@linux.ibm.com>
    Reviewed-by: Steffen Maier <maier@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Benjamin-Block authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    79f9abd View commit details
    Browse the repository at this point in the history
  4. scsi: ufs: core: Simplify ufshcd_execute_start_stop()

    Use scsi_execute_cmd() instead of open-coding it.
    
    Link: https://lore.kernel.org/r/20230210193258.4004923-4-bvanassche@acm.org
    Cc: Mike Christie <michael.christie@oracle.com>
    Cc: John Garry <john.g.garry@oracle.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: John Garry <john.g.garry@oracle.com>
    Reviewed-by: Asutosh Das <quic_asutoshd@quicinc.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    bvanassche authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    2702812 View commit details
    Browse the repository at this point in the history
  5. scsi: ufs: core: Rely on the block layer for setting RQF_PM

    Do not set RQF_PM explicitly since scsi_alloc_request() sets it indirectly
    if BLK_MQ_REQ_PM is set. The call chain for the code that sets RQF_PM is as
    follows:
    
        scsi_alloc_request()
          blk_mq_alloc_request()
            __blk_mq_alloc_requests()
              blk_mq_rq_ctx_init()
                if (data->flags & BLK_MQ_REQ_PM)
                  data->rq_flags |= RQF_PM;
    
    Link: https://lore.kernel.org/r/20230210193258.4004923-3-bvanassche@acm.org
    Cc: Mike Christie <michael.christie@oracle.com>
    Cc: John Garry <john.g.garry@oracle.com>
    Reviewed-by: John Garry <john.g.garry@oracle.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    bvanassche authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    93bc4a5 View commit details
    Browse the repository at this point in the history
  6. scsi: core: Extend struct scsi_exec_args

    Allow SCSI LLDs to specify SCMD_* flags.
    
    Link: https://lore.kernel.org/r/20230210193258.4004923-2-bvanassche@acm.org
    Cc: Mike Christie <michael.christie@oracle.com>
    Cc: John Garry <john.g.garry@oracle.com>
    Reviewed-by: John Garry <john.g.garry@oracle.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    bvanassche authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    35cd2f5 View commit details
    Browse the repository at this point in the history
  7. scsi: lpfc: Fix double word in comments

    Remove the repeated word "the" in comments.
    
    [mkp: fixed additional typos in the changed lines]
    
    Link: https://lore.kernel.org/r/20230217083046.4090-1-liubo03@inspur.com
    Signed-off-by: Bo Liu <liubo03@inspur.com>
    Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Bo Liu authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    442336a View commit details
    Browse the repository at this point in the history
  8. scsi: core: Remove the /proc/scsi/${proc_name} directory earlier

    Remove the /proc/scsi/${proc_name} directory earlier to fix a race
    condition between unloading and reloading kernel modules. This fixes a bug
    introduced in 2009 by commit 77c0197 ("[SCSI] fix /proc memory leak in
    the SCSI core").
    
    Fix the following kernel warning:
    
    proc_dir_entry 'scsi/scsi_debug' already registered
    WARNING: CPU: 19 PID: 27986 at fs/proc/generic.c:376 proc_register+0x27d/0x2e0
    Call Trace:
     proc_mkdir+0xb5/0xe0
     scsi_proc_hostdir_add+0xb5/0x170
     scsi_host_alloc+0x683/0x6c0
     sdebug_driver_probe+0x6b/0x2d0 [scsi_debug]
     really_probe+0x159/0x540
     __driver_probe_device+0xdc/0x230
     driver_probe_device+0x4f/0x120
     __device_attach_driver+0xef/0x180
     bus_for_each_drv+0xe5/0x130
     __device_attach+0x127/0x290
     device_initial_probe+0x17/0x20
     bus_probe_device+0x110/0x130
     device_add+0x673/0xc80
     device_register+0x1e/0x30
     sdebug_add_host_helper+0x1a7/0x3b0 [scsi_debug]
     scsi_debug_init+0x64f/0x1000 [scsi_debug]
     do_one_initcall+0xd7/0x470
     do_init_module+0xe7/0x330
     load_module+0x122a/0x12c0
     __do_sys_finit_module+0x124/0x1a0
     __x64_sys_finit_module+0x46/0x50
     do_syscall_64+0x38/0x80
     entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    Link: https://lore.kernel.org/r/20230210205200.36973-3-bvanassche@acm.org
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Yi Zhang <yi.zhang@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 77c0197 ("[SCSI] fix /proc memory leak in the SCSI core")
    Reported-by: Yi Zhang <yi.zhang@redhat.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    bvanassche authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    fc66371 View commit details
    Browse the repository at this point in the history
  9. scsi: core: Fix a source code comment

    Fix an incorrect reference to the scsi_remove_host() function in a source
    code comment.
    
    Link: https://lore.kernel.org/r/20230210205200.36973-2-bvanassche@acm.org
    Fixes: b49493f ("Fix a memory leak in scsi_host_dev_release()")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    bvanassche authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    f4407e6 View commit details
    Browse the repository at this point in the history
  10. scsi: cxgbi: Remove unneeded version.h include

    Remove unneeded version.h include pointed out by 'make versioncheck'.
    
    Link: https://lore.kernel.org/r/820137c2-decc-3d78-f170-7f1c0571fbb7@gmail.com
    Signed-off-by: Jesper Juhl <jesperjuhl76@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    jjuhl authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    5794a39 View commit details
    Browse the repository at this point in the history
  11. scsi: qedi: Remove unneeded version.h include

    Remove unneeded version.h include pointed out by 'make versioncheck'.
    
    Link: https://lore.kernel.org/r/820137c2-decc-3d78-f170-7f1c0571fbb7@gmail.com
    Signed-off-by: Jesper Juhl <jesperjuhl76@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    jjuhl authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    e0aa38c View commit details
    Browse the repository at this point in the history
  12. scsi: mpi3mr: Remove unneeded version.h include

    Remove unneeded version.h include pointed out by 'make versioncheck'.
    
    Link: https://lore.kernel.org/r/820137c2-decc-3d78-f170-7f1c0571fbb7@gmail.com
    Signed-off-by: Jesper Juhl <jesperjuhl76@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    jjuhl authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    66b381d View commit details
    Browse the repository at this point in the history
  13. scsi: mpi3mr: Fix missing mrioc->evtack_cmds initialization

    Commit c1af985 ("scsi: mpi3mr: Add Event acknowledgment logic")
    introduced an array mrioc->evtack_cmds but initialization of the array
    elements was missed. They are just zero cleared. The function
    mpi3mr_complete_evt_ack() refers host_tag field of the elements. Due to the
    zero value of the host_tag field, the function calls clear_bit() for
    mrico->evtack_cmds_bitmap with wrong bit index. This results in memory
    access to invalid address and "BUG: KASAN: use-after-free". This BUG was
    observed at eHBA-9600 firmware update to version 8.3.1.0. To fix it, add
    the missing initialization of mrioc->evtack_cmds.
    
    Link: https://lore.kernel.org/r/20230214005019.1897251-5-shinichiro.kawasaki@wdc.com
    Cc: stable@vger.kernel.org
    Fixes: c1af985 ("scsi: mpi3mr: Add Event acknowledgment logic")
    Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Acked-by: Sathya Prakash Veerichetty <sathya.prakash@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    kawasaki authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    e39ea83 View commit details
    Browse the repository at this point in the history
  14. scsi: mpi3mr: Use number of bits to manage bitmap sizes

    To allocate bitmaps, the mpi3mr driver calculates sizes of bitmaps using
    byte as unit. However, bitmap helper functions assume that bitmaps are
    allocated using unsigned long as unit. This gap causes memory access beyond
    the bitmap sizes and results in "BUG: KASAN: slab-out-of-bounds".  The BUG
    was observed at firmware download to eHBA-9600. Call trace indicated that
    the out-of-bounds access happened in find_first_zero_bit() called from
    mpi3mr_send_event_ack() for miroc->evtack_cmds_bitmap.
    
    To fix the BUG, do not use bytes to manage bitmap sizes. Instead, use
    number of bits, and call bitmap helper functions which take number of bits
    as arguments. For memory allocation, call bitmap_zalloc() instead of
    kzalloc() and krealloc(). For memory free, call bitmap_free() instead of
    kfree(). For zero clear, call bitmap_clear() instead of memset().
    
    Remove three fields for bitmap byte sizes in struct scmd_priv which are no
    longer required. Replace the field dev_handle_bitmap_sz with
    dev_handle_bitmap_bits to keep number of bits of removepend_bitmap across
    resize.
    
    Link: https://lore.kernel.org/r/20230214005019.1897251-4-shinichiro.kawasaki@wdc.com
    Fixes: c5758fc ("scsi: mpi3mr: Gracefully handle online FW update operation")
    Fixes: e844adb ("scsi: mpi3mr: Implement SCSI error handler hooks")
    Fixes: c1af985 ("scsi: mpi3mr: Add Event acknowledgment logic")
    Fixes: 824a156 ("scsi: mpi3mr: Base driver code")
    Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Acked-by: Sathya Prakash Veerichetty <sathya.prakash@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    kawasaki authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    339e615 View commit details
    Browse the repository at this point in the history
  15. scsi: mpi3mr: Remove unnecessary memcpy() to alltgt_info->dmi

    In the function mpi3mr_get_all_tgt_info(), devmap_info points to
    alltgt_info->dmi then there is no need to memcpy() data from devmap_info to
    alltgt_info->dmi. Remove the unnecessary memcpy(). This also allows to
    remove the local variable 'rval' and the goto label 'out'.
    
    Link: https://lore.kernel.org/r/20230214005019.1897251-3-shinichiro.kawasaki@wdc.com
    Cc: stable@vger.kernel.org
    Fixes: f5e6d5a ("scsi: mpi3mr: Add support for driver commands")
    Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Acked-by: Sathya Prakash Veerichetty <sathya.prakash@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    kawasaki authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    eeb270a View commit details
    Browse the repository at this point in the history
  16. scsi: mpi3mr: Fix issues in mpi3mr_get_all_tgt_info()

    The function mpi3mr_get_all_tgt_info() has four issues:
    
    1) It calculates valid entry length in alltgt_info assuming the header part
       of the struct mpi3mr_device_map_info would equal to sizeof(u32).  The
       correct size is sizeof(u64).
    
    2) When it calculates the valid entry length kern_entrylen, it excludes one
       entry by subtracting 1 from num_devices.
    
    3) It copies num_device by calling memcpy(). Substitution is enough.
    
    4) It does not specify the calculated length to sg_copy_from_buffer().
       Instead, it specifies the payload length which is larger than the
       alltgt_info size. It causes "BUG: KASAN: slab-out-of-bounds".
    
    Fix the issues by using the correct header size, removing the subtraction
    from num_devices, replacing the memcpy() with substitution and specifying
    the correct length to sg_copy_from_buffer().
    
    Link: https://lore.kernel.org/r/20230214005019.1897251-2-shinichiro.kawasaki@wdc.com
    Cc: stable@vger.kernel.org
    Fixes: f5e6d5a ("scsi: mpi3mr: Add support for driver commands")
    Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Acked-by: Sathya Prakash Veerichetty <sathya.prakash@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    kawasaki authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    fb428a2 View commit details
    Browse the repository at this point in the history
  17. scsi: mpi3mr: Fix an issue found by KASAN

    Write only correct size (32 instead of 64 bytes).
    
    Link: https://lore.kernel.org/r/20230213193752.6859-1-thenzl@redhat.com
    Fixes: 42fc9fe ("scsi: mpi3mr: Add helper functions to manage device's port")
    Signed-off-by: Tomas Henzl <thenzl@redhat.com>
    Acked-by: Sathya Prakash Veerichetty <sathya.prakash@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    thenzl authored and martinkpetersen committed Feb 22, 2023
    Copy the full SHA
    ae7d45f View commit details
    Browse the repository at this point in the history
Older