• Saeed Mahameed's avatar
    net/mlx5: E-Switch, UBSAN fix undefined behavior in mlx5_eswitch_mode · 443a8581
    Saeed Mahameed authored
    With debug kernel UBSAN detects the following issue, which might happen
    when eswitch instance is not created, fix this by testing the eswitch
    pointer before returning the eswitch mode, if not set return mode =
    SRIOV_NONE.
    
    [   32.528951] UBSAN: Undefined behaviour in drivers/net/ethernet/mellanox/mlx5/core/eswitch.c:2219:12
    [   32.528951] member access within null pointer of type 'struct mlx5_eswitch'
    [   32.528951] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.18.0-rc3-dirty #181
    [   32.528951] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.11.0-0-g63451fca13-prebuilt.qemu-project.org 04/01/2014
    [   32.528951] Call Trace:
    [   32.528951]  dump_stack+0xc7/0x13b
    [   32.528951]  ? show_regs_print_info+0x5/0x5
    [   32.528951]  ? __pm_runtime_use_autosuspend+0x140/0x140
    [   32.528951]  ubsan_epilogue+0x9/0x49
    [   32.528951]  ubsan_type_mismatch_common+0x1f9/0x2c0
    [   32.528951]  ? ucs2_as_utf8+0x310/0x310
    [   32.528951]  ? device_initialize+0x229/0x2e0
    [   32.528951]  __ubsan_handle_type_mismatch+0x9f/0xc9
    [   32.528951]  ? __ubsan_handle_divrem_overflow+0x19b/0x19b
    [   32.578008]  ? ib_device_get_by_index+0xf0/0xf0
    [   32.578008]  mlx5_eswitch_mode+0x30/0x40
    [   32.578008]  mlx5_ib_add+0x1e0/0x4a0
    
    Fixes: 57cbd893 ("net/mlx5: E-Switch, Move representors definition to a global scope")
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    Reviewed-by: default avatarLeon Romanovsky <leonro@mellanox.com>
    443a8581
eswitch.c 62.2 KB