Showing error 568

User: Jiri Slaby
Error type: Double Lock
Error type description: Some lock is locked twice unintentionally in a sequence
File location: drivers/infiniband/core/cma.c
Line in file: 1461
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:19:59 UTC


Source:

1431{
1432        struct rdma_id_private *dev_id_priv;
1433        struct rdma_cm_id *id;
1434        int ret;
1435
1436        id = rdma_create_id(cma_listen_handler, id_priv, id_priv->id.ps);
1437        if (IS_ERR(id))
1438                return;
1439
1440        dev_id_priv = container_of(id, struct rdma_id_private, id);
1441
1442        dev_id_priv->state = CMA_ADDR_BOUND;
1443        memcpy(&id->route.addr.src_addr, &id_priv->id.route.addr.src_addr,
1444               ip_addr_size((struct sockaddr *) &id_priv->id.route.addr.src_addr));
1445
1446        cma_attach_to_dev(dev_id_priv, cma_dev);
1447        list_add_tail(&dev_id_priv->listen_list, &id_priv->listen_list);
1448        atomic_inc(&id_priv->refcount);
1449        dev_id_priv->internal_id = 1;
1450
1451        ret = rdma_listen(id, id_priv->backlog);
1452        if (ret)
1453                printk(KERN_WARNING "RDMA CMA: cma_listen_on_dev, error %d, "
1454                       "listening on device %s\n", ret, cma_dev->device->name);
1455}
1456
1457static void cma_listen_on_all(struct rdma_id_private *id_priv)
1458{
1459        struct cma_device *cma_dev;
1460
1461        mutex_lock(&lock);
1462        list_add_tail(&id_priv->list, &listen_any_list);
1463        list_for_each_entry(cma_dev, &dev_list, list)
1464                cma_listen_on_dev(id_priv, cma_dev);
1465        mutex_unlock(&lock);
1466}
1467
1468static int cma_bind_any(struct rdma_cm_id *id, sa_family_t af)
1469{
1470        struct sockaddr_in addr_in;
1471
Show full sources