Revision af6565adb02d3129d3fae4d9d5da945abaf4417a authored by Michal Kalderon on 17 February 2020, 11:37:18 UTC, committed by David S. Miller on 18 February 2020, 20:05:53 UTC
If an event is added while the rdma workqueue is being destroyed it could lead to several races, list corruption, null pointer dereference during queue_work or init_queue. This fixes the race between the two flows which can occur during shutdown. A kref object and a completion object are added to the rdma_dev structure, these are initialized before the workqueue is created. The refcnt is used to indicate work is being added to the workqueue and ensures the cleanup flow won't start while we're in the middle of adding the event. Once the work is added, the refcnt is decreased and the cleanup flow is safe to run. Fixes: cee9fbd8e2e ("qede: Add qedr framework") Signed-off-by: Ariel Elior <ariel.elior@marvell.com> Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 9b64208
File | Mode | Size |
---|---|---|
.gitignore | -rw-r--r-- | 44 bytes |
Kconfig | -rw-r--r-- | 3.4 KB |
Makefile | -rw-r--r-- | 4.1 KB |
blacklist.c | -rw-r--r-- | 4.0 KB |
blacklist.h | -rw-r--r-- | 84 bytes |
blacklist_hashes.c | -rw-r--r-- | 166 bytes |
blacklist_nohashes.c | -rw-r--r-- | 122 bytes |
system_certificates.S | -rw-r--r-- | 828 bytes |
system_keyring.c | -rw-r--r-- | 8.7 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...