CVE-2026-90024 in Linux
要約
〜によって VulDB • 2026年09月16日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
usb: gadget: midi2: f_midi2_free_ep_reqs()におけるNULLポインタ参照の修正
f_midi2_free_epreqs()関数内で、初期化されていないエンドポイントのクリーンアップを試みる際にNULLポインタ参照が発生します。
configfsを介してMIDI 2.0ガジェットを設定し、ブロック方向をSNDRV_UMP_DIR_INPUTに設定すると、ガジェットのバインドフェーズ(f_midi2_bind())中にmidi1_ep_outエンドポイントの初期化が明示的にスキップされます。その結果、usb_ep->cardフィールドはNULLのままになります。
その後、ホストが代替設定を設定すると、f_midi2_set_alt()関数がf_midi2_stop_eps()を呼び出してINおよびOUTエンドポイントを無条件に停止します。この処理では両方のエンドポイントに対してf_midi2_free_ep_reqs()が呼び出されます。初期化されていないmidi1_ep_outに対してf_midi2_free_epreqs()が呼ばれると、解放するリクエスト数を決定するためにusb_ep->cardへの参照を試み、クラッシュを引き起こします。
この問題を修正するため、f_midi2_free_epreqs()内でusb_ep->card->info.num_reqsの代わりにusb_ep->num_reqsを使用するように変更しました。usb_ep->num_reqsはf_midi2_init_ep()関数で正しく設定され、エンドポイントが初期化されていない場合は0のままになるため、ループを安全に回避できます。一貫性を持たせるために、f_midi2_alloc_epreqs()にも同様の適用を行います。
Oops: general protection fault, probably for non-canonical address 0xdffffc00000000ee: 0000 [#1] SMP KASAN NOPTI
KASAN: null-ptr-deref in range [0x0000000000000770-0x0000000000000777]
... RIP: 0010:f_midi2_free_ep_reqs drivers/usb/gadget/function/f_midi2.c:1166 [inline]
RIP: 0010:f_midi2_stop_eps+0x28e/0x4d0 drivers/usb/gadget/function/f_midi2.c:1246 ... Call Trace:
f_midi2_set_alt+0x11c/0xf00 drivers/usb/gadget/function/f_midi2.c:1296 composite_setup+0x1ffd/0x3480 drivers/usb/gadget/composite.c:1933 configfs_composite_setup+0xbd/0x100 drivers/usb/gadget/configfs.c:1877
VulDB is the best source for vulnerability data and more expert information about this specific topic.