CVE-2023-54112

kcm: Fix memory leak in error path of kcm_sendmsg()

State
Published
Severity
Not scored
Published
Dec 24, 2025
Updated
May 11, 2026
Reserved
Dec 24, 2025

Read the record on cve.org

Description

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

kcm: Fix memory leak in error path of kcm_sendmsg()

syzbot reported a memory leak like below:

BUG: memory leak unreferenced object 0xffff88810b088c00 (size 240): comm "syz-executor186", pid 5012, jiffies 4294943306 (age 13.680s) hex dump (first 32 bytes): 00 89 08 0b 81 88 ff ff 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [<ffffffff83e5d5ff>] __alloc_skb+0x1ef/0x230 net/core/skbuff.c:634 [<ffffffff84606e59>] alloc_skb include/linux/skbuff.h:1289 [inline] [<ffffffff84606e59>] kcm_sendmsg+0x269/0x1050 net/kcm/kcmsock.c:815 [<ffffffff83e479c6>] sock_sendmsg_nosec net/socket.c:725 [inline] [<ffffffff83e479c6>] sock_sendmsg+0x56/0xb0 net/socket.c:748 [<ffffffff83e47f55>] ____sys_sendmsg+0x365/0x470 net/socket.c:2494 [<ffffffff83e4c389>] ___sys_sendmsg+0xc9/0x130 net/socket.c:2548 [<ffffffff83e4c536>] __sys_sendmsg+0xa6/0x120 net/socket.c:2577 [<ffffffff84ad7bb8>] do_syscall_x64 arch/x86/entry/common.c:50 [inline] [<ffffffff84ad7bb8>] do_syscall_64+0x38/0xb0 arch/x86/entry/common.c:80 [<ffffffff84c0008b>] entry_SYSCALL_64_after_hwframe+0x63/0xcd

In kcm_sendmsg(), kcm_tx_msg(head)->last_skb is used as a cursor to append newly allocated skbs to 'head'. If some bytes are copied, an error occurred, and jumped to out_error label, 'last_skb' is left unmodified. A later kcm_sendmsg() will use an obsoleted 'last_skb' reference, corrupting the 'head' frag_list and causing the leak.

This patch fixes this issue by properly updating the last allocated skb in 'last_skb'.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 to before 8dc7eb757b1652b82725f32e0c89a1e9f6c0e13bAffected
  • ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 to before 5e5554389397e98fafb9efe395d8b4830dd5f042Affected
  • ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 to before 479c71cda14b3c3a6515773faa39055333eaa2b7Affected
  • ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 to before 33db24ad811b3576a0c2f8862506763f2be925b0Affected
  • ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 to before 97275339c34cfbccd65e87bc38fd910ae66c48baAffected
  • ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 to before 16989de75497574b5fafd174c0c233d5a86858b7Affected
  • ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 to before af8085e0fc3207ecbf8b9e7a635c790e36d058c6Affected
  • ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 to before c821a88bd720b0046433173185fd841a100d44adAffected
LinuxLinux
  • 4.6Affected
  • before 4.6Not affected
  • 4.14.326 through 4.14.*Not affected
  • 4.19.295 through 4.19.*Not affected
  • 5.4.257 through 5.4.*Not affected
  • 5.10.195 through 5.10.*Not affected
  • 5.15.132 through 5.15.*Not affected
  • 6.1.54 through 6.1.*Not affected
  • 6.5.4 through 6.5.*Not affected
  • 6.6 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.