製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおける不特定の脆弱性
Title LinuxのLinux Kernelにおける不特定の脆弱性
Summary

Linuxカーネルにおいて、以下の脆弱性が修正されました。tracepoint_add_func()内のfunc_add()失敗時にbalance_regfunc()の動作に問題がありました。トレースポイントが0から1へ遷移する際、tracepoint_add_func()は新しいプローブをfunc_add()経由でインストールしようとする前に、サブシステムのext-regfunc()を呼び出します。もしfunc_add()が失敗した場合(例えば、allocate_probes()がメモリ不足のため新しいプローブ配列を割り当てられず-ENOMEMを返す場合など)、対応するext-unregfunc()を呼び出さずにエラーを返すため、regfunc()の副作用が残り、インストールされたプローブがない状態が発生します。特にシステムコールトレースポイントでは問題が深刻です。syscall_regfunc()はsys_tracepoint_refcountを増加させ、すべてのタスクにSYSCALL_TRACEPOINTを設定します。失敗が生じた場合、参照カウントは0でない値に固定され、消費者がいないにもかかわらず、すべてのタスクがシステムコールのトレースエントリおよびエグジットのオーバーヘッドを継続的に負担し、再起動するまで解消されません。他のregfunc()/unregfunc()ペアを提供するサブシステムも同様に持続的な状態を示します。既存の1から0へのクリーンアップ処理をミラーリングし、func_add()のエラーパスでext-unregfunc()を呼び出すように修正しました。この呼び出しは登録時に使われる条件で制御されているため、登録と解除が対称となります。

Possible impacts ・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 ・当該ソフトウェアが扱う情報について、書き換えは発生しません。 ・当該ソフトウェアが完全に停止する可能性があります。 
Solution

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

Publication Date May 28, 2026, midnight
Registration Date June 11, 2026, 4:22 p.m.
Last Update June 11, 2026, 4:22 p.m.
CVSS3.0 : 警告
Score 5.5
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Affected System
Linux
Linux Kernel 4.10 以上 6.6.140 未満
Linux Kernel 6.13 以上 6.18.30 未満
Linux Kernel 6.19 以上 7.0.7 未満
Linux Kernel 6.7 以上 6.12.88 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年06月11日]
  掲載
June 11, 2026, 4:22 p.m.

NVD Vulnerability Information
CVE-2026-46196
Summary

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

tracepoint: balance regfunc() on func_add() failure in tracepoint_add_func()

When a tracepoint goes through the 0 -> 1 transition, tracepoint_add_func()
invokes the subsystem's ext->regfunc() before attempting to install the
new probe via func_add(). If func_add() then fails (for example, when
allocate_probes() cannot allocate a new probe array under memory pressure
and returns -ENOMEM), the function returns the error without calling the
matching ext->unregfunc(), leaving the side effects of regfunc() behind
with no installed probe to justify them.

For syscall tracepoints this is particularly unpleasant: syscall_regfunc()
bumps sys_tracepoint_refcount and sets SYSCALL_TRACEPOINT on every task.
After a leaked failure, the refcount is stuck at a non-zero value with no
consumer, and every task continues paying the syscall trace entry/exit
overhead until reboot. Other subsystems providing regfunc()/unregfunc()
pairs exhibit similarly scoped persistent state.

Mirror the existing 1 -> 0 cleanup and call ext->unregfunc() in the
func_add() error path, gated on the same condition used there so the
unwind is symmetric with the registration.

Publication Date May 28, 2026, 7:16 p.m.
Registration Date May 29, 2026, 4:13 a.m.
Last Update May 28, 2026, 10:44 p.m.
Related information, measures and tools
Common Vulnerabilities List