Description
In the Linux kernel, the following vulnerability has been resolved: NFSD: Prevent client use-after-free during close_lru reaping An nfs4_openowner left on nn->close_lru after its final CLOSE keeps its last closed stateid in oo_last_closed_stid, holding only a raw pointer to its nfs4_client. The laundromat reaps timed-out entries, drops nn->client_lock, and calls nfs4_put_stid(), which dereferences the client through cl_lock. Nothing pins the client across that window, so a concurrent force_expire_client() can free it and nfs4_put_stid() reads freed memory. __destroy_client() hits the same race, walking clp->cl_openowners without cl_lock. Pin the client with cl_rpc_users before dropping client_lock, and skip clients already expiring. __destroy_client() then cleans up its own close_lru entries through release_last_closed_stateid(), so teardown no longer races the laundromat.
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
217526e7ecc9f6f243e976772e81eab7ab986a4c to < adc34b5df5c5d87043cb500b0867fc1c4ad0117eaffected217526e7ecc9f6f243e976772e81eab7ab986a4c to < 0763482227822f7343557f086afc382086d56c4caffected217526e7ecc9f6f243e976772e81eab7ab986a4c to < 83dd59ac1c3455c2c7d8ddb582d980a13199b9b3affected217526e7ecc9f6f243e976772e81eab7ab986a4c to < e57a9ed34ea8c17e831de59b8f1a6b2d80d347a1affected217526e7ecc9f6f243e976772e81eab7ab986a4c to < 2330b788d732f43668b965b3105b37ceb276dfeaaffected
Linux Linux
Default version status: affected
3.17affected0 to < 3.17unaffected6.6.160 to ≤ 6.6.*unaffected6.12.111 to ≤ 6.12.*unaffected6.18.51 to ≤ 6.18.*unaffected7.2.5 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/adc34b5df5c5d87043cb500b0867fc1c4ad0117e ↗
- https://git.kernel.org/stable/c/0763482227822f7343557f086afc382086d56c4c ↗
- https://git.kernel.org/stable/c/83dd59ac1c3455c2c7d8ddb582d980a13199b9b3 ↗
- https://git.kernel.org/stable/c/e57a9ed34ea8c17e831de59b8f1a6b2d80d347a1 ↗
- https://git.kernel.org/stable/c/2330b788d732f43668b965b3105b37ceb276dfea ↗