User: | Jiri Slaby |
Error type: | Calling function from invalid context |
Error type description: | Some function is called at inappropriate place like sleep inside critical sections or interrupt handlers |
File location: | drivers/infiniband/hw/amso1100/c2_qp.c |
Line in file: | 634 |
Project: | Linux Kernel |
Project version: | 2.6.28 |
Tools: |
Stanse
(1.2)
|
Entered: | 2011-11-07 22:19:02 UTC |
604 605 /* 606 * Lock CQs here, so that CQ polling code can do QP lookup 607 * without taking a lock. 608 */ 609 c2_lock_cqs(send_cq, recv_cq); 610 c2_free_qpn(c2dev, qp->qpn); 611 c2_unlock_cqs(send_cq, recv_cq); 612 613 /* 614 * Destory qp in the rnic... 615 */ 616 destroy_qp(c2dev, qp); 617 618 /* 619 * Mark any unreaped CQEs as null and void. 620 */ 621 c2_cq_clean(c2dev, qp, send_cq->cqn); 622 if (send_cq != recv_cq) 623 c2_cq_clean(c2dev, qp, recv_cq->cqn); 624 /* 625 * Unmap the MQs and return the shared pointers 626 * to the message pool. 627 */ 628 iounmap(qp->sq_mq.peer); 629 iounmap(qp->rq_mq.peer); 630 c2_free_mqsp(qp->sq_mq.shared); 631 c2_free_mqsp(qp->rq_mq.shared); 632 633 atomic_dec(&qp->refcount); 634 wait_event(qp->wait, !atomic_read(&qp->refcount)); 635} 636 637/* 638 * Function: move_sgl 639 * 640 * Description: 641 * Move an SGL from the user's work request struct into a CCIL Work Request 642 * message, swapping to WR byte order and ensure the total length doesn't 643 * overflow. 644 *