Description
In the Linux kernel, the following vulnerability has been resolved: net/9p: use a dedicated spinlock for trans_fd Shamelessly copying the explanation from Tetsuo Handa's suggested patch[1] (slightly reworded): syzbot is reporting inconsistent lock state in p9_req_put()[2], for p9_tag_remove() from p9_req_put() from IRQ context is using spin_lock_irqsave() on "struct p9_client"->lock but trans_fd (not from IRQ context) is using spin_lock(). Since the locks actually protect different things in client.c and in trans_fd.c, just replace trans_fd.c's lock by a new one specific to the transport (client.c's protect the idr for fid/tag allocations, while trans_fd.c's protects its own req list and request status field that acts as the transport's state machine)
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
673d62cdaac6ffbce980a349d3174b3929ceb9e5 to < 43bbadb7e4636dc02f6a283c2a39e6438e6173cdaffected673d62cdaac6ffbce980a349d3174b3929ceb9e5 to < 717b9b4f38703d7f5293059e3a242d16f76fa045affected673d62cdaac6ffbce980a349d3174b3929ceb9e5 to < 296ab4a813841ba1d5f40b03190fd1bd8f25aab0affected
Linux Linux
Default version status: affected
2.6.28affected0 to < 2.6.28unaffected5.15.80 to ≤ 5.15.*unaffected6.0.10 to ≤ 6.0.*unaffected6.1 to ≤ *unaffected