diff options
| author | Dmitry Bogdanov <d.bogdanov@yadro.com> | 2026-07-16 16:42:19 +0200 |
|---|---|---|
| committer | Keith Busch <kbusch@kernel.org> | 2026-08-11 08:53:28 -0700 |
| commit | 36ac05f7cfd59d90c597071304b14e98090d5dd1 (patch) | |
| tree | 50a55a0e7967cc871e7b15357a3418b24287ed12 /tools/perf/scripts/python/bin | |
| parent | 1161be71d1ecf7dc785382114c71afed0349531e (diff) | |
nvme-tcp: fix usage of page_frag_cache
nvme uses page_frag_cache to preallocate PDU for each preallocated request
of block device. Block devices are created in parallel threads,
consequently page_frag_cache is used in not thread-safe manner.
That leads to incorrect refcounting of backstore pages and premature free.
That can be catched by !sendpage_ok inside network stack:
WARNING: CPU: 7 PID: 467 at ../net/core/skbuff.c:6931 skb_splice_from_iter+0xfa/0x310.
tcp_sendmsg_locked+0x782/0xce0
tcp_sendmsg+0x27/0x40
sock_sendmsg+0x8b/0xa0
nvme_tcp_try_send_cmd_pdu+0x149/0x2a0
Then random panic may occur.
Fix that by serializing the usage of page_frag_cache.
Fixes: 4e893ca81170 ("nvme_core: scan namespaces asynchronously")
Signed-off-by: Dmitry Bogdanov <d.bogdanov@yadro.com>
Signed-off-by: Daniel Wagner <wagi@kernel.org>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/bin')
0 files changed, 0 insertions, 0 deletions
