[BUG] block: drbd: four possible ABBA deadlocks
From: Jia-Ju Bai <hidden>
Date: 2021-08-19 09:31:13
Also in:
lkml
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 <redacted> Best wishes, Jia-Ju Bai