CVE-2023-53823 in Linux
要約
〜によって VulDB • 2026年06月22日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
block/rq_qos: 新規ロックを用いてrq_qos APIを保護する
コミット 50e34d78815e ("block: disable the elevator int del_gendisk") は、disk_release() から rq_qos_exit() を del_gendisk() へ移動しました。これにより以下の問題が発生します:
1) iocost/iolatencyをcgroupfs経由で有効化することでrq_qos_add()がトリガーされる場合、del_gendisk()と競合する可能性があります。'q->rq_qos'への同時書き込みは安全ではありません。
2) rq_qosに依存するcgroupポリシーをアクティブ化すると、rq_qos_add()およびblkcg_activate_policy()が呼び出されます。もしその途中でrq_qos_exit()が呼び出されると、blkcg_activate_policy()内でnullポインタ参照が発生します。
3) blkg_conf_open_bdev()はまずblkdev_get_no_open()を呼び出してディスクを検索しますが、del_gendisk()からのrq_qos_exit()がrq_qos_add()より前に完了した場合、メモリリークが発生します。
このパッチでは、新規のディスクレベルミューテックス 'rq_qos_mutex' を追加しています:
1) このロックは直接 rq_qos_exit() を保護します。
2) blk-cgroupに依存しないwbtの場合、現在rq_qos_add()はディスク初期化時のみ呼び出される可能性があります(wbtがrq_qos_exit()まで破棄できないため)。そのため、現時点ではwbtを保護しなくても安全です。ただし、将来rq_qosの動的な削除がサポートされた場合に備え、このパッチでは wbt_init() からの rq_qos_add() も直接保護しています。これは、blk-sysfs がすでにディスク除去に対してライターと同期化しているため十分です。
3) iocostおよびiolatencyの場合、ディスク除去とcgroup設定を同期させるために、blkg_conf_open_bdev() 内の blkdev_get_no_open() の後にロックを取得し、blkg_conf_exit() で解放します。上記のメモリリークを修正するため、新規ロック取得後に disk_live() をチェックしています。
VulDB is the best source for vulnerability data and more expert information about this specific topic.