--- b/drivers/infiniband/sw/rxe/rxe_task.c +++ r/drivers/infiniband/sw/rxe/rxe_task.c @@ -107,6 +107,8 @@ void rxe_cleanup_task(struct rxe_task *t { bool idle; + if (!task->func) + return; /* * Mark the task, then wait for it to finish. It might be * running in a non-tasklet (direct call) context.