Messages in this thread | | | From | Jia-Ju Bai <> | Subject | [BUG] block: drbd: four possible ABBA deadlocks | Date | Thu, 19 Aug 2021 17:31:04 +0800 |
| |
Hello,
My static analysis tool reports four possible ABBA deadlocks in the drbd drivers in Linux 5.10:
### Deadlock A ### w_after_conn_state_ch() mutex_lock(&connection->resource->conf_update); --> line 2065 conn_free_crypto() drbd_free_sock() drbd_free_one_sock(&connection->data) mutex_lock(&ds->mutex); --> line 2967
drbd_adm_net_opts() mutex_lock(&connection->data.mutex); --> line 2445 mutex_lock(&connection->resource->conf_update); --> line 2446
When w_after_conn_state_ch() and drbd_adm_net_opts() are concurrently executed, the deadlock can occur.
### Deadlock B ### drbd_adm_connect() mutex_lock(&adm_ctx.resource->conf_update); --> line 2644 conn_free_crypto() drbd_free_one_sock(&connection->data) mutex_lock(&ds->mutex); --> line 2967
drbd_adm_net_opts() mutex_lock(&connection->data.mutex); --> line 2445 mutex_lock(&connection->resource->conf_update); --> line 2446
When drbd_adm_connect() and drbd_adm_net_opts() are concurrently executed, the deadlock can occur.
### Deadlock C ### w_after_conn_state_ch() mutex_lock(&connection->resource->conf_update); --> line 2065 conn_free_crypto() drbd_free_sock() drbd_free_one_sock(&connection->data) mutex_lock(&ds->mutex); --> line 2967
receive_protocol() mutex_lock(&connection->data.mutex); --> line 3778 mutex_lock(&connection->resource->conf_update); --> line 3779
When w_after_conn_state_ch() and receive_protocol() are concurrently executed, the deadlock can occur.
### Deadlock D ### drbd_adm_connect() mutex_lock(&adm_ctx.resource->conf_update); --> line 2644 conn_free_crypto() drbd_free_one_sock(&connection->data) mutex_lock(&ds->mutex); --> line 2967
receive_protocol() mutex_lock(&connection->data.mutex); --> line 3778 mutex_lock(&connection->resource->conf_update); --> line 3779
When drbd_adm_connect() and receive_protocol() are concurrently executed, the deadlock can occur.
I am not quite sure whether these possible deadlocks are real and how to fix them if they are real. Any feedback would be appreciated, thanks
Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
Best wishes, Jia-Ju Bai
| |