• Jens Axboe's avatar
    io_uring: fix failure to verify SQ_AFF cpu · cf1fa8c9
    Jens Axboe authored
    commit 44a9bd18 upstream.
    
    The test case we have is rightfully failing with the current kernel:
    
    io_uring_setup(1, 0x7ffe2cafebe0), flags: IORING_SETUP_SQPOLL|IORING_SETUP_SQ_AFF, resv: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000, sq_thread_cpu: 4
    expected -1, got 3
    
    This is in a vm, and CPU3 is the last valid one, hence asking for 4
    should fail the setup with -EINVAL, not succeed. The problem is that
    we're using array_index_nospec() with nr_cpu_ids as the index, hence we
    wrap and end up using CPU0 instead of CPU4. This makes the setup
    succeed where it should be failing.
    
    We don't need to use array_index_nospec() as we're not indexing any
    array with this. Instead just compare with nr_cpu_ids directly. This
    is fine as we're checking with cpu_online() afterwards.
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    cf1fa8c9
io_uring.c 72.4 KB