Showing error 1798

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/infiniband/hw/nes/nes_verbs.c
Line in file: 1474
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-11 08:47:26 UTC


Source:

1444                        /* Wait for CQP */
1445                        nes_debug(NES_DBG_QP, "Waiting for create iWARP QP%u to complete.\n",
1446                                        nesqp->hwqp.qp_id);
1447                        ret = wait_event_timeout(cqp_request->waitq,
1448                                        (cqp_request->request_done != 0), NES_EVENT_TIMEOUT);
1449                        nes_debug(NES_DBG_QP, "Create iwarp QP%u completed, wait_event_timeout ret=%u,"
1450                                        " nesdev->cqp_head = %u, nesdev->cqp.sq_tail = %u,"
1451                                        " CQP Major:Minor codes = 0x%04X:0x%04X.\n",
1452                                        nesqp->hwqp.qp_id, ret, nesdev->cqp.sq_head, nesdev->cqp.sq_tail,
1453                                        cqp_request->major_code, cqp_request->minor_code);
1454                        if ((!ret) || (cqp_request->major_code)) {
1455                                nes_put_cqp_request(nesdev, cqp_request);
1456                                nes_free_resource(nesadapter, nesadapter->allocated_qps, qp_num);
1457                                nes_free_qp_mem(nesdev, nesqp,virt_wqs);
1458                                kfree(nesqp->allocated_buffer);
1459                                if (!ret) {
1460                                        return ERR_PTR(-ETIME);
1461                                } else {
1462                                        return ERR_PTR(-EIO);
1463                                }
1464                        }
1465
1466                        nes_put_cqp_request(nesdev, cqp_request);
1467
1468                        if (ibpd->uobject) {
1469                                uresp.mmap_sq_db_index = nesqp->mmap_sq_db_index;
1470                                uresp.actual_sq_size = sq_size;
1471                                uresp.actual_rq_size = rq_size;
1472                                uresp.qp_id = nesqp->hwqp.qp_id;
1473                                uresp.nes_drv_opt = nes_drv_opt;
1474                                if (ib_copy_to_udata(udata, &uresp, sizeof uresp)) {
1475                                        nes_free_resource(nesadapter, nesadapter->allocated_qps, qp_num);
1476                                        nes_free_qp_mem(nesdev, nesqp,virt_wqs);
1477                                        kfree(nesqp->allocated_buffer);
1478                                        return ERR_PTR(-EFAULT);
1479                                }
1480                        }
1481
1482                        nes_debug(NES_DBG_QP, "QP%u structure located @%p.Size = %u.\n",
1483                                        nesqp->hwqp.qp_id, nesqp, (u32)sizeof(*nesqp));
1484                        spin_lock_init(&nesqp->lock);
Show full sources