CVE-2024-46704 in Linux情報

要約

〜によって VulDB • 2026年06月20日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

workqueue: __flush_work() における偽陽性のデータ競合を修正する

ワークアイテムのキャンセル時にフラッシュを行う際、__flush_work() は PENDING ビットを通じてそのワークアイテムを排他的に所有していることを認識しています。134874e2eee9(「workqueue: atomic コンテキストから BH ワークアイテムに対して cancel_work_sync() および disable_work() を許可する」)は、キャンセルされている BH ワークアイテムに対してビジーウェイトを使用すべきかどうかを判断するために @work->data の読み込みを追加しました。@from_cancel が真の場合、この読み込みは安全ですが、コード構造を簡素化するため、@from_cancel のテストよりも前に @work->data が読み込まれていました:

data = *work_data_bits(work); if (from_cancel && !WARN_ON_ONCE(data & WORK_STRUCT_PWQ) && (data & WORK_OFFQ_BH)) {

読み出されたデータは !@from_cancel の場合は決して使用されませんでしたが、これにより KCSAN(Kernel Concurrency Sanitizer)のデータ競合検知が偽陽性でトリガーされる可能性があります:

================================================================== BUG: KCSAN: data-race in __flush_work / __flush_work

write to 0xffff8881223aa3e8 of 8 bytes by task 3998 on cpu 0: instrument_write include/linux/instrumented.h:41 [inline]
___set_bit include/asm-generic/bitops/instrumented-non-atomic.h:28 [inline]
insert_wq_barrier kernel/workqueue.c:3790 [inline]
start_flush_work kernel/workqueue.c:4142 [inline]
__flush_work+0x30b/0x570 kernel/workqueue.c:4178 flush_work kernel/workqueue.c:4229 [inline]
...

read to 0xffff8881223aa3e8 of 8 bytes by task 50 on cpu 1: __flush_work+0x42a/0x570 kernel/workqueue.c:4188 flush_work kernel/workqueue.c:4229 [inline]
flush_delayed_work+0x66/0x70 kernel/workqueue.c:4251 ...

value changed: 0x0000000000400000 -> 0xffff88810006c00d

@work->data にアクセスする前に @from_cancel をテストするようにコードを再編成します。問題となるのは、KCSAN の検知が偽陽性でトリガーされることだけです。これには READ_ONCE() やその他のアクセスクオリファイアは必要ありません。

機能的な変更はありません。

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

責任者

Linux

予約する

2024年09月11日

モデレーション

承諾済み

エントリ

VDB-277394

EPSS

0.00175

アクティビティ

非常低い

ソース

Might our Artificial Intelligence support you?

Check our Alexa App!