{"id":"CVE-2022-49112","state":"PUBLISHED","title":"mt76: fix monitor mode crash with sdio driver","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nmt76: fix monitor mode crash with sdio driver\n\nmt7921s driver may receive frames with fragment buffers. If there is a\nCTS packet received in monitor mode, the payload is 10 bytes only and\nneed 6 bytes header padding after RXD buffer. However, only RXD in the\nfirst linear buffer, if we pull buffer size RXD-size+6 bytes with\nskb_pull(), that would trigger \"BUG_ON(skb->len < skb->data_len)\" in\n__skb_pull().\n\nTo avoid the nonlinear buffer issue, enlarge the RXD size from 128 to\n256 to make sure all MCU operation in linear buffer.\n\n[   52.007562] kernel BUG at include/linux/skbuff.h:2313!\n[   52.007578] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP\n[   52.007987] pc : skb_pull+0x48/0x4c\n[   52.008015] lr : mt7921_queue_rx_skb+0x494/0x890 [mt7921_common]\n[   52.008361] Call trace:\n[   52.008377]  skb_pull+0x48/0x4c\n[   52.008400]  mt76s_net_worker+0x134/0x1b0 [mt76_sdio 35339a92c6eb7d4bbcc806a1d22f56365565135c]\n[   52.008431]  __mt76_worker_fn+0xe8/0x170 [mt76 ef716597d11a77150bc07e3fdd68eeb0f9b56917]\n[   52.008449]  kthread+0x148/0x3ac\n[   52.008466]  ret_from_fork+0x10/0x30","publishedAt":"2025-02-26T01:54:57.109Z","updatedAt":"2026-08-12T23:57:46.056Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"48fab5bbef4092d925ab3214773ad12e68807223","status":"affected","lessThan":"c37b4cab3d97ef64b206fca4d9daabd9aff7356e","versionType":"git"},{"version":"48fab5bbef4092d925ab3214773ad12e68807223","status":"affected","lessThan":"95e2af01669c7a3cb7a933cefa06361f9db15059","versionType":"git"},{"version":"48fab5bbef4092d925ab3214773ad12e68807223","status":"affected","lessThan":"123bc712b1de0805f9d683687e17b1ec2aba0b68","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/mediatek/mt76/mt76.h"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.16","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.16","versionType":"semver"},{"version":"5.16.20","status":"unaffected","lessThanOrEqual":"5.16.*","versionType":"semver"},{"version":"5.17.3","status":"unaffected","lessThanOrEqual":"5.17.*","versionType":"semver"},{"version":"5.18","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/mediatek/mt76/mt76.h"]}],"references":["https://git.kernel.org/stable/c/c37b4cab3d97ef64b206fca4d9daabd9aff7356e","https://git.kernel.org/stable/c/95e2af01669c7a3cb7a933cefa06361f9db15059","https://git.kernel.org/stable/c/123bc712b1de0805f9d683687e17b1ec2aba0b68"],"weaknesses":[],"ingestedAt":"2026-10-29T20:05:26.763Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2022/49xxx/CVE-2022-49112.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2022-49112","state":"PUBLISHED","datePublished":"2025-02-26T01:54:57.109Z","dateUpdated":"2026-08-12T23:57:46.056Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2025-02-26T01:49:39.261Z"},"containers":{"cna":{"title":"mt76: fix monitor mode crash with sdio driver","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nmt76: fix monitor mode crash with sdio driver\n\nmt7921s driver may receive frames with fragment buffers. If there is a\nCTS packet received in monitor mode, the payload is 10 bytes only and\nneed 6 bytes header padding after RXD buffer. However, only RXD in the\nfirst linear buffer, if we pull buffer size RXD-size+6 bytes with\nskb_pull(), that would trigger \"BUG_ON(skb->len < skb->data_len)\" in\n__skb_pull().\n\nTo avoid the nonlinear buffer issue, enlarge the RXD size from 128 to\n256 to make sure all MCU operation in linear buffer.\n\n[   52.007562] kernel BUG at include/linux/skbuff.h:2313!\n[   52.007578] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP\n[   52.007987] pc : skb_pull+0x48/0x4c\n[   52.008015] lr : mt7921_queue_rx_skb+0x494/0x890 [mt7921_common]\n[   52.008361] Call trace:\n[   52.008377]  skb_pull+0x48/0x4c\n[   52.008400]  mt76s_net_worker+0x134/0x1b0 [mt76_sdio 35339a92c6eb7d4bbcc806a1d22f56365565135c]\n[   52.008431]  __mt76_worker_fn+0xe8/0x170 [mt76 ef716597d11a77150bc07e3fdd68eeb0f9b56917]\n[   52.008449]  kthread+0x148/0x3ac\n[   52.008466]  ret_from_fork+0x10/0x30"}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"48fab5bbef4092d925ab3214773ad12e68807223","status":"affected","lessThan":"c37b4cab3d97ef64b206fca4d9daabd9aff7356e","versionType":"git"},{"version":"48fab5bbef4092d925ab3214773ad12e68807223","status":"affected","lessThan":"95e2af01669c7a3cb7a933cefa06361f9db15059","versionType":"git"},{"version":"48fab5bbef4092d925ab3214773ad12e68807223","status":"affected","lessThan":"123bc712b1de0805f9d683687e17b1ec2aba0b68","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/mediatek/mt76/mt76.h"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.16","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.16","versionType":"semver"},{"version":"5.16.20","status":"unaffected","lessThanOrEqual":"5.16.*","versionType":"semver"},{"version":"5.17.3","status":"unaffected","lessThanOrEqual":"5.17.*","versionType":"semver"},{"version":"5.18","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/mediatek/mt76/mt76.h"]}],"references":[{"url":"https://git.kernel.org/stable/c/c37b4cab3d97ef64b206fca4d9daabd9aff7356e"},{"url":"https://git.kernel.org/stable/c/95e2af01669c7a3cb7a933cefa06361f9db15059"},{"url":"https://git.kernel.org/stable/c/123bc712b1de0805f9d683687e17b1ec2aba0b68"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-12T23:57:46.056Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.16","versionEndExcluding":"5.16.20"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.16","versionEndExcluding":"5.17.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.16","versionEndExcluding":"5.18"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}