Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: smb: client: delete compound mids on send failure before unlock When sending a compound request fails, smb_send_rqst() kicks off a reconnect. compound_send_recv() still has those mids on pending_mid_q, but it unlocks the server without removing them first. During reconnect, cifs_abort_connection() walks pending_mid_q and runs each mid callback. With no response yet, those callbacks return credits and drop in_flight. Then compound_send_recv()'s send-error path returns the same credits again. in_flight ends up decremented twice and smb2_add_credits() WARNs. syzbot hits this during SMB2_negotiate when the socket send fails. cifs_call_async() already calls delete_mid() before unlock on send failure. Do the same for compound chains and set cancelled_mid[] so the out: path does not delete them again.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected ee258d79159afed52ca9372aeb9c1a51e89b32ee before 70783946f3b5d0c06ec7df0f5e7bec2bfad24efb; affected ee258d79159afed52ca9372aeb9c1a51e89b32ee before 8f6f8a48399f82f4a83f7b9f25b9707e0062a4f9; affected 3c57a0be487088b08d9c88998f911eb4a7ba36e4; affected 4.20.11 before 4.21 |
| Linux / Linux | affected 5.0; unaffected 0 before 5.0; unaffected 7.2.9 through 7.2.*; unaffected 7.3 through * |
CWE
No CWE identifiers supplied.