Description
In the Linux kernel, the following vulnerability has been resolved: sunrpc: defer rq_argp and rq_resp free until after RCU grace period svc_rqst_free() frees rqstp->rq_argp and rqstp->rq_resp synchronously via kfree(), but defers the rqstp struct free via kfree_rcu(). After svc_exit_thread() calls list_del_rcu() and svc_rqst_free(), there is a window where RCU readers that started before list_del_rcu() can still traverse the thread list and find the rqstp. These readers (e.g. nfsd_nl_rpc_status_get_dumpit()) dereference rqstp->rq_argp, which has already been freed — a use-after-free. Fix this by moving the kfree of rq_argp and rq_resp into an explicit call_rcu() callback alongside the struct free. Resources not accessed by RCU readers (bvec, buffer pages, scratch folio, auth_data) remain synchronously freed.
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
812443865c5fc255363d4a684a62c086af1addca to < c977158237bccc3d2512d5b17c47ee3760dc8839affected812443865c5fc255363d4a684a62c086af1addca to < 0ea49d69aa806008b2424c8cf21cf746b9963967affected812443865c5fc255363d4a684a62c086af1addca to < 08bc49e0541260bf294962cf889a32a2d2713ad6affected812443865c5fc255363d4a684a62c086af1addca to < e0c5693d3f9a5d4911735ab0e0eba4eecb1f1090affected812443865c5fc255363d4a684a62c086af1addca to < c479bde671cbe2f9e152834a8b0eb7c3c295bbafaffected
Linux Linux
Default version status: affected
3.19affected0 to < 3.19unaffected6.1.191 to ≤ 6.1.*unaffected6.12.111 to ≤ 6.12.*unaffected6.18.50 to ≤ 6.18.*unaffected7.2.4 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/c977158237bccc3d2512d5b17c47ee3760dc8839 ↗
- https://git.kernel.org/stable/c/0ea49d69aa806008b2424c8cf21cf746b9963967 ↗
- https://git.kernel.org/stable/c/08bc49e0541260bf294962cf889a32a2d2713ad6 ↗
- https://git.kernel.org/stable/c/e0c5693d3f9a5d4911735ab0e0eba4eecb1f1090 ↗
- https://git.kernel.org/stable/c/c479bde671cbe2f9e152834a8b0eb7c3c295bbaf ↗