• Mustafa Ismail's avatar
    RDMA/irdma: Fix sleep from invalid context BUG · cc031556
    Mustafa Ismail authored
    Taking the qos_mutex to process RoCEv2 QP's on netdev events causes a
    kernel splat.
    
    Fix this by removing the handling for RoCEv2 in
    irdma_cm_teardown_connections that uses the mutex. This handling is only
    needed for iWARP to avoid having connections established while the link is
    down or having connections remain functional after the IP address is
    removed.
    
      BUG: sleeping function called from invalid context at kernel/locking/mutex.
      Call Trace:
      kernel: dump_stack+0x66/0x90
      kernel: ___might_sleep.cold.92+0x8d/0x9a
      kernel: mutex_lock+0x1c/0x40
      kernel: irdma_cm_teardown_connections+0x28e/0x4d0 [irdma]
      kernel: ? check_preempt_curr+0x7a/0x90
      kernel: ? select_idle_sibling+0x22/0x3c0
      kernel: ? select_task_rq_fair+0x94c/0xc90
      kernel: ? irdma_exec_cqp_cmd+0xc27/0x17c0 [irdma]
      kernel: ? __wake_up_common+0x7a/0x190
      kernel: irdma_if_notify+0x3cc/0x450 [irdma]
      kernel: ? sched_clock_cpu+0xc/0xb0
      kernel: irdma_inet6addr_event+0xc6/0x150 [irdma]
    
    Fixes: 146b9756 ("RDMA/irdma: Add connection manager")
    Signed-off-by: default avatarMustafa Ismail <mustafa.ismail@intel.com>
    Signed-off-by: default avatarShiraz Saleem <shiraz.saleem@intel.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
    cc031556
cm.c 118 KB