Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1336 CNY

100%

CVE-2022-49398— usb: dwc3: gadget: Replace list_for_each_entry_safe() if using giveback

AI Predicted 7.5 Difficulty: Hard EPSS 0.26% · P18

Possible ATT&CK Techniques 1AI

T1059 · Command and Scripting Interpreter

Affected Version Matrix 12

VendorProductVersion RangeStatus
LinuxLinuxd4f1afe5e896c18ae01099a85dab5e1a198bd2a8< 1c6e5dc3b639c96e6839a8d1b8e951923fdfd34aaffected
d4f1afe5e896c18ae01099a85dab5e1a198bd2a8< 2424307cdf421ac72075a1384eae4e4199ab6457affected
d4f1afe5e896c18ae01099a85dab5e1a198bd2a8< 26a7e6832afe9d9a991cfd9015177f083cf959ccaffected
d4f1afe5e896c18ae01099a85dab5e1a198bd2a8< bf594d1d0c1d7b895954018043536ffd327844f9affected
d7ff2e3ff0e09d57b43014fe26b13bb3c9677254affected
4.19.57< 4.20affected
5.0affected
< 5.0unaffected
… +4 more rows
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2022-49398

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
usb: dwc3: gadget: Replace list_for_each_entry_safe() if using giveback
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: usb: dwc3: gadget: Replace list_for_each_entry_safe() if using giveback The list_for_each_entry_safe() macro saves the current item (n) and the item after (n+1), so that n can be safely removed without corrupting the list. However, when traversing the list and removing items using gadget giveback, the DWC3 lock is briefly released, allowing other routines to execute. There is a situation where, while items are being removed from the cancelled_list using dwc3_gadget_ep_cleanup_cancelled_requests(), the pullup disable routine is running in parallel (due to UDC unbind). As the cleanup routine removes n, and the pullup disable removes n+1, once the cleanup retakes the DWC3 lock, it references a request who was already removed/handled. With list debug enabled, this leads to a panic. Ensure all instances of the macro are replaced where gadget giveback is used. Example call stack: Thread#1: __dwc3_gadget_ep_set_halt() - CLEAR HALT -> dwc3_gadget_ep_cleanup_cancelled_requests() ->list_for_each_entry_safe() ->dwc3_gadget_giveback(n) ->dwc3_gadget_del_and_unmap_request()- n deleted[cancelled_list] ->spin_unlock ->Thread#2 executes ... ->dwc3_gadget_giveback(n+1) ->Already removed! Thread#2: dwc3_gadget_pullup() ->waiting for dwc3 spin_lock ... ->Thread#1 released lock ->dwc3_stop_active_transfers() ->dwc3_remove_requests() ->fetches n+1 item from cancelled_list (n removed by Thread#1) ->dwc3_gadget_giveback() ->dwc3_gadget_del_and_unmap_request()- n+1 deleted[cancelled_list] ->spin_unlock
Source: CVE Program / CVE List V5
CVSS Information
N/A
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于usb: dwc3: gadget在使用giveback时未正确处理列表遍历。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

VendorProductAffected VersionsCPESubscribe
LinuxLinux d4f1afe5e896c18ae01099a85dab5e1a198bd2a8 ~ 1c6e5dc3b639c96e6839a8d1b8e951923fdfd34a -
LinuxLinux 5.0 -

II. Public POCs for CVE-2022-49398

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2022-49398

登录查看更多情报信息。

Patches & Fixes for CVE-2022-49398 (4)

Same Patch Batch · Linux · 2025-02-26 · 706 CVEs total

CVE-2022-495619.8 CRITICALnetfilter: conntrack: re-fetch conntrack after insertion
CVE-2022-491499.8 CRITICALrxrpc: Fix call timer start racing with call destruction
CVE-2022-494079.8 CRITICALdlm: fix plock invalid read
CVE-2022-493629.8 CRITICALNFSD: Fix potential use-after-free in nfsd_file_put()
CVE-2022-492019.8 CRITICALibmvnic: fix race between xmit and reset
CVE-2022-491949.8 CRITICALnet: bcmgenet: Use stronger register read/writes to assure ordering
CVE-2022-490939.8 CRITICALskbuff: fix coalescing for page_pool fragment recycling
CVE-2022-492609.8 CRITICALcrypto: hisilicon/sec - fix the aead software fallback for engine
CVE-2022-490949.8 CRITICALnet/tls: fix slab-out-of-bounds bug in decrypt_internal
CVE-2022-494189.8 CRITICALNFSv4: Fix free of uninitialized nfs4_label on referral lookup.
CVE-2022-492809.8 CRITICALNFSD: prevent underflow in nfssvc_decode_writeargs()
CVE-2022-493569.8 CRITICALSUNRPC: Trap RDMA segment overflows
CVE-2022-490589.1 CRITICALcifs: potential buffer overflow in handling symlinks
CVE-2022-495008.8 HIGHwl1251: dynamically allocate memory used for DMA
CVE-2022-494708.8 HIGHBluetooth: btmtksdio: fix use-after-free at btmtksdio_recv_event
CVE-2022-491148.8 HIGHscsi: libfc: Fix use after free in fc_exch_abts_resp()
CVE-2022-495358.8 HIGHscsi: lpfc: Fix null pointer dereference after failing to issue FLOGI and PLOGI
CVE-2022-494718.8 HIGHrtw89: cfo: check mac_id to avoid out-of-bounds
CVE-2022-491118.8 HIGHBluetooth: Fix use after free in hci_send_acl
CVE-2022-495198.8 HIGHath10k: skip ath10k_halt during suspend for driver state RESTARTING

Showing top 20 of 706 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2022-49398

No comments yet


Leave a comment