Hi- /** * rdma_create_id - Create an RDMA identifier. * * @net: The network namespace in which to create the new id. * @event_handler: User callback invoked to report events associated with the * returned rdma_id. * @context: User specified context associated with the id. * @ps: RDMA port space. * @qp_type: type of queue pair associated with the id. * * The id holds a reference on the network namespace until it is destroyed. */ #define rdma_create_id(net, event_handler, context, ps, qp_type) Is it guaranteed that the @event_handler function is called in a process context? Code audit suggests it's always a delayed worker thread, thus it would always be safe to use spin_lock_bh in the event handler function. Same question for the consumer's QP event handler: struct ib_qp_init_attr { void (*event_handler)(struct ib_event *, void *); Thanks in advance. -- Chuck Lever