net/rds: Add missing mutex_unlock
authorJulia Lawall <julia@diku.dk>
Wed, 26 May 2010 05:54:21 +0000 (05:54 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 29 May 2010 07:18:48 +0000 (00:18 -0700)
Add a mutex_unlock missing on the error path.  In each case, whenever the
label out is reached from elsewhere in the function, mutex is not locked.

The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@@
expression E1;
@@

* mutex_lock(E1);
  <+... when != E1
  if (...) {
    ... when != E1
*   return ...;
  }
  ...+>
* mutex_unlock(E1);
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Reviewed-by: Zach Brown <zach.brown@oracle.com>
Acked-by: Andy Grover <andy.grover@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/rds/ib_cm.c
net/rds/iw_cm.c

index 10ed0d55f75948702837e2154327876a521d3d8b..f68832798db224d6abffcc08f4ad494fa2b3bc17 100644 (file)
@@ -475,6 +475,7 @@ int rds_ib_cm_handle_connect(struct rdma_cm_id *cm_id,
        err = rds_ib_setup_qp(conn);
        if (err) {
                rds_ib_conn_error(conn, "rds_ib_setup_qp failed (%d)\n", err);
+               mutex_unlock(&conn->c_cm_lock);
                goto out;
        }
 
index a9d951b4fbaec49dfea00dc6494639b0d32403ac..b5dd6ac39be86b87afc1bd7761971a11550e572f 100644 (file)
@@ -452,6 +452,7 @@ int rds_iw_cm_handle_connect(struct rdma_cm_id *cm_id,
        err = rds_iw_setup_qp(conn);
        if (err) {
                rds_iw_conn_error(conn, "rds_iw_setup_qp failed (%d)\n", err);
+               mutex_unlock(&conn->c_cm_lock);
                goto out;
        }