Description
In the Linux kernel, the following vulnerability has been resolved: smb: client: pin DFS superblock in iterator callback tcon_super_cb() stores a raw superblock pointer, but __cifs_get_super() takes its active reference only after iterate_supers_type() has dropped s_umount and its passive reference. Concurrent DFS automount expiry can therefore free the superblock before cifs_sb_active() uses it. A deterministic KASAN test reproduces the race as: BUG: KASAN: slab-use-after-free in cifs_sb_active+0x77/0x80 The same test passes with this change applied. Take the active reference in the callback while iterate_supers_type() still holds s_umount shared. cifs_put_tcp_super() remains the matching release.
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
bacd704a95ad0b93af995aae4a523aa046f46563 to < 3c9acc9835c304013a4faeb969fe9333d66ca9f8affectedbacd704a95ad0b93af995aae4a523aa046f46563 to < ea43a15cea36dc5ddd832be5bddeac7dd804cbcfaffectedbacd704a95ad0b93af995aae4a523aa046f46563 to < a6b6561522212af852c9ad8a7dca8d59ef2c7377affectedbacd704a95ad0b93af995aae4a523aa046f46563 to < 5b01a8c0209690db75341528ec53fd87e0ac1460affectedbacd704a95ad0b93af995aae4a523aa046f46563 to < d806d5a85dcbe2a0f181b2f0f9f61ddfbefa1818affected
Linux Linux
Default version status: affected
5.7affected0 to < 5.7unaffected6.6.158 to ≤ 6.6.*unaffected6.12.111 to ≤ 6.12.*unaffected6.18.53 to ≤ 6.18.*unaffected7.2.7 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/3c9acc9835c304013a4faeb969fe9333d66ca9f8 ↗
- https://git.kernel.org/stable/c/ea43a15cea36dc5ddd832be5bddeac7dd804cbcf ↗
- https://git.kernel.org/stable/c/a6b6561522212af852c9ad8a7dca8d59ef2c7377 ↗
- https://git.kernel.org/stable/c/5b01a8c0209690db75341528ec53fd87e0ac1460 ↗
- https://git.kernel.org/stable/c/d806d5a85dcbe2a0f181b2f0f9f61ddfbefa1818 ↗