projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
9767a27
)
RDMA/cm: Add a note explaining how the timewait is eventually freed
author
Jason Gunthorpe
<jgg@mellanox.com>
Wed, 6 May 2020 07:46:57 +0000
(10:46 +0300)
committer
Jason Gunthorpe
<jgg@mellanox.com>
Wed, 13 May 2020 00:32:53 +0000
(21:32 -0300)
The way the cm_timewait_info is converted into a work and then freed
is very subtle and surprising, add a note clarifying the lifetime
here.
Link:
https://lore.kernel.org/r/20200506074701.9775-7-leon@kernel.org
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/cm.c
patch
|
blob
|
history
diff --git
a/drivers/infiniband/core/cm.c
b/drivers/infiniband/core/cm.c
index
6a2a5f6
..
74c46b0
100644
(file)
--- a/
drivers/infiniband/core/cm.c
+++ b/
drivers/infiniband/core/cm.c
@@
-1025,6
+1025,11
@@
static void cm_enter_timewait(struct cm_id_private *cm_id_priv)
msecs_to_jiffies(wait_time));
spin_unlock_irqrestore(&cm.lock, flags);
+ /*
+ * The timewait_info is converted into a work and gets freed during
+ * cm_free_work() in cm_timewait_handler().
+ */
+ BUILD_BUG_ON(offsetof(struct cm_timewait_info, work) != 0);
cm_id_priv->timewait_info = NULL;
}