• Ming Lei's avatar
    blk-mq: fix updating tags depth · 3ddbcd49
    Ming Lei authored
    [ Upstream commit 75d6e175 ]
    
    The passed 'nr' from userspace represents the total depth, meantime
    inside 'struct blk_mq_tags', 'nr_tags' stores the total tag depth,
    and 'nr_reserved_tags' stores the reserved part.
    
    There are two issues in blk_mq_tag_update_depth() now:
    
    1) for growing tags, we should have used the passed 'nr', and keep the
    number of reserved tags not changed.
    
    2) the passed 'nr' should have been used for checking against
    'tags->nr_tags', instead of number of the normal part.
    
    This patch fixes the above two cases, and avoids kernel crash caused
    by wrong resizing sbitmap queue.
    
    Cc: "Ewan D. Milne" <emilne@redhat.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Bart Van Assche <bart.vanassche@sandisk.com>
    Cc: Omar Sandoval <osandov@fb.com>
    Tested by: Marco Patalano <mpatalan@redhat.com>
    Signed-off-by: 's avatarMing Lei <ming.lei@redhat.com>
    Signed-off-by: 's avatarJens Axboe <axboe@kernel.dk>
    Signed-off-by: 's avatarSasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: 's avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    3ddbcd49