CVE-2024-42256

Source
https://nvd.nist.gov/vuln/detail/CVE-2024-42256
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-42256.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2024-42256
Downstream
Published
2024-08-08T08:49:15.813Z
Modified
2025-12-05T06:04:01.679736Z
Summary
cifs: Fix server re-repick on subrequest retry
Details

In the Linux kernel, the following vulnerability has been resolved:

cifs: Fix server re-repick on subrequest retry

When a subrequest is marked for needing retry, netfs will call cifspreparewrite() which will make cifs repick the server for the op before renegotiating credits; it then calls cifsissuewrite() which invokes smb2asyncwritev() - which re-repicks the server.

If a different server is then selected, this causes the increment of server->in_flight to happen against one record and the decrement to happen against another, leading to misaccounting.

Fix this by just removing the repick code in smb2asyncwritev(). As this is only called from netfslib-driven code, cifspreparewrite() should always have been called first, and so server should never be NULL and the preparatory step is repeated in the event that we do a retry.

The problem manifests as a warning looking something like:

WARNING: CPU: 4 PID: 72896 at fs/smb/client/smb2ops.c:97 smb2addcredits+0x3f0/0x9e0 [cifs] ... RIP: 0010:smb2addcredits+0x3f0/0x9e0 [cifs] ... smb2writevcallback+0x334/0x560 [cifs] cifsdemultiplexthread+0x77a/0x11b0 [cifs] kthread+0x187/0x1d0 retfromfork+0x34/0x60 retfromfork_asm+0x1a/0x30

Which may be triggered by a number of different xfstests running against an Azure server in multichannel mode. generic/249 seems the most repeatable, but generic/215, generic/249 and generic/308 may also show it.

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/42xxx/CVE-2024-42256.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
3ee1a1fc39819906f04d6c62c180e760cd3a689d
Fixed
b1d0a566769b6fb3795b5289fc1daf9e0638d97a
Fixed
de40579b903883274fe203865f29d66b168b7236

Affected versions

v6.*

v6.10
v6.10-rc1
v6.10-rc2
v6.10-rc3
v6.10-rc4
v6.10-rc5
v6.10-rc6
v6.10-rc7
v6.9
v6.9-rc7

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.10.0
Fixed
6.10.1