• Weiping Zhang's avatar
    nvme-pci: align io queue count with allocted nvme_queue in nvme_probe · 2a5bcfdd
    Weiping Zhang authored
    Since commit 147b27e4 ("nvme-pci: allocate device queues storage
    space at probe"), nvme_alloc_queue does not alloc the nvme queues
    itself anymore.
    
    If the write/poll_queues module parameters are changed at runtime to
    values larger than the number of allocated queues in nvme_probe,
    nvme_alloc_queue will access unallocated memory.
    
    Add a new nr_allocated_queues member to struct nvme_dev to record how
    many queues were alloctated in nvme_probe to avoid using more than the
    allocated queues after a reset following a change to the
    write/poll_queues module parameters.
    
    Also add nr_write_queues and nr_poll_queues members to allow refreshing
    the number of write and poll queues based on a change to the module
    parameters when resetting the controller.
    
    Fixes: 147b27e4 ("nvme-pci: allocate device queues storage space at probe")
    Signed-off-by: default avatarWeiping Zhang <zhangweiping@didiglobal.com>
    Reviewed-by: default avatarKeith Busch <kbusch@kernel.org>
    Reviewed-by: default avatarMax Gurtovoy <maxg@mellanox.com>
    [hch: add nvme_max_io_queues, update the commit message]
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    2a5bcfdd
pci.c 80.6 KB