Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: NFSv4/flexfiles: fix NULL dereference for NFSv4.0 data servers flexfiles accepts NFSv4.0 data servers, but two NFSv4 code paths assume the data server client has a session. Unlike NFSv4.1+, an NFSv4.0 client has no session (clp->cl_session is NULL; it uses clp->cl_slot_tbl), so I/O to a v4.0 flexfiles DS oopses: - nfs4_init_ds_session() dereferences clp->cl_session->session_state while seeding the DS lease. It also only seeds cl_lease_time when NFS4_SESSION_INITING is set; without a session that never happens, so cl_lease_time stays 0 and nfs4_renew_state() busy-loops, requeuing every 5 seconds. Seed the lease whenever there is no session and return before touching session state. - ff_layout_async_handle_error_v4() dereferences clp->cl_session->fc_slot_table on every DS I/O error. Fall back to the v4.0 transport slot table (clp->cl_slot_tbl) when there is no session.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected a7878ca140084ec267ede48fce64d7e60f6d873e before 336b6da10021c69a8f273bbacdf7432fdc89a06f; affected a7878ca140084ec267ede48fce64d7e60f6d873e before 5527af72b0100c94287bfec901b6313eeac567ca; affected a7878ca140084ec267ede48fce64d7e60f6d873e before 163c16e01f53fc8eb8d0f3484ae6c382265ecbbd; affected a7878ca140084ec267ede48fce64d7e60f6d873e before 436a214514e24103159aea455147d58b44a8a585; affected a7878ca140084ec267ede48fce64d7e60f6d873e before 2b03ebbf8d5e8f6af4ecd6c65375232dd1ec32cc |
| Linux / Linux | affected 4.12; unaffected 0 before 4.12; unaffected 6.6.160 through 6.6.*; unaffected 6.12.114 through 6.12.*; unaffected 6.18.52 through 6.18.*; unaffected 7.2.6 through 7.2.*; unaffected 7.3 through * |
CWE
No CWE identifiers supplied.
References
- https://git.kernel.org/stable/c/336b6da10021c69a8f273bbacdf7432fdc89a06f
- https://git.kernel.org/stable/c/5527af72b0100c94287bfec901b6313eeac567ca
- https://git.kernel.org/stable/c/163c16e01f53fc8eb8d0f3484ae6c382265ecbbd
- https://git.kernel.org/stable/c/436a214514e24103159aea455147d58b44a8a585
- https://git.kernel.org/stable/c/2b03ebbf8d5e8f6af4ecd6c65375232dd1ec32cc