RDMA/cm: Add some lockdep assertions for cm_id_priv->lock
authorJason Gunthorpe <jgg@mellanox.com>
Tue, 10 Mar 2020 09:25:40 +0000 (11:25 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 17 Mar 2020 20:05:53 +0000 (17:05 -0300)
These functions all touch state, so must be called under the lock.
Inspection shows this is currently true.

Link: https://lore.kernel.org/r/20200310092545.251365-11-leon@kernel.org
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/cm.c

index 3ce735527938cf3d7ecd9f0891fca5192b39d7f3..cc3e90e77eec3ab8b7d425d0095a9303a918cbc3 100644 (file)
@@ -974,6 +974,8 @@ static void cm_enter_timewait(struct cm_id_private *cm_id_priv)
        unsigned long flags;
        struct cm_device *cm_dev;
 
+       lockdep_assert_held(&cm_id_priv->lock);
+
        cm_dev = ib_get_client_data(cm_id_priv->id.device, &cm_client);
        if (!cm_dev)
                return;
@@ -1005,6 +1007,8 @@ static void cm_reset_to_idle(struct cm_id_private *cm_id_priv)
 {
        unsigned long flags;
 
+       lockdep_assert_held(&cm_id_priv->lock);
+
        cm_id_priv->id.state = IB_CM_IDLE;
        if (cm_id_priv->timewait_info) {
                spin_lock_irqsave(&cm.lock, flags);
@@ -1823,6 +1827,8 @@ static void cm_format_rej(struct cm_rej_msg *rej_msg,
                          const void *private_data,
                          u8 private_data_len)
 {
+       lockdep_assert_held(&cm_id_priv->lock);
+
        cm_format_mad_hdr(&rej_msg->hdr, CM_REJ_ATTR_ID, cm_id_priv->tid);
        IBA_SET(CM_REJ_REMOTE_COMM_ID, rej_msg,
                be32_to_cpu(cm_id_priv->id.remote_id));