• Yishai Hadas's avatar
    vfio/mlx5: Fix UBSAN note · c9c4c070
    Yishai Hadas authored
    Prevent calling roundup_pow_of_two() with value of 0 as it causes the
    below UBSAN note.
    
    Move this code and its few extra related lines to be called only when
    it's really applicable.
    
    UBSAN: shift-out-of-bounds in ./include/linux/log2.h:57:13
    shift exponent 64 is too large for 64-bit type 'long unsigned int'
    CPU: 15 PID: 1639 Comm: live_migration Not tainted 6.1.0-rc4 #1116
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009),
    BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
    Call Trace:
     <TASK>
    dump_stack_lvl+0x45/0x59
    ubsan_epilogue+0x5/0x36
     __ubsan_handle_shift_out_of_bounds.cold+0x61/0xef
    ? lock_is_held_type+0x98/0x110
    ? rcu_read_lock_sched_held+0x3f/0x70
    mlx5vf_create_rc_qp.cold+0xe4/0xf2 [mlx5_vfio_pci]
    mlx5vf_start_page_tracker+0x769/0xcd0 [mlx5_vfio_pci]
     vfio_device_fops_unl_ioctl+0x63f/0x700 [vfio]
    __x64_sys_ioctl+0x433/0x9a0
    do_syscall_64+0x3d/0x90
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
     </TASK>
    
    Fixes: 79c3cf27 ("vfio/mlx5: Init QP based resources for dirty tracking")
    Signed-off-by: default avatarYishai Hadas <yishaih@nvidia.com>
    Reviewed-by: default avatarJason Gunthorpe <jgg@nvidia.com>
    Link: https://lore.kernel.org/r/20230108154427.32609-2-yishaih@nvidia.comSigned-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    c9c4c070
cmd.c 43.2 KB