CVE-2022-49146 (GCVE-0-2022-49146)

Vulnerability from cvelistv5 – Published: 2025-02-26 01:55 – Updated: 2026-05-11 18:54
VLAI
Title
virtio: use virtio_device_ready() in virtio_device_restore()
Summary
In the Linux kernel, the following vulnerability has been resolved: virtio: use virtio_device_ready() in virtio_device_restore() After waking up a suspended VM, the kernel prints the following trace for virtio drivers which do not directly call virtio_device_ready() in the .restore: PM: suspend exit irq 22: nobody cared (try booting with the "irqpoll" option) Call Trace: <IRQ> dump_stack_lvl+0x38/0x49 dump_stack+0x10/0x12 __report_bad_irq+0x3a/0xaf note_interrupt.cold+0xb/0x60 handle_irq_event+0x71/0x80 handle_fasteoi_irq+0x95/0x1e0 __common_interrupt+0x6b/0x110 common_interrupt+0x63/0xe0 asm_common_interrupt+0x1e/0x40 ? __do_softirq+0x75/0x2f3 irq_exit_rcu+0x93/0xe0 sysvec_apic_timer_interrupt+0xac/0xd0 </IRQ> <TASK> asm_sysvec_apic_timer_interrupt+0x12/0x20 arch_cpu_idle+0x12/0x20 default_idle_call+0x39/0xf0 do_idle+0x1b5/0x210 cpu_startup_entry+0x20/0x30 start_secondary+0xf3/0x100 secondary_startup_64_no_verify+0xc3/0xcb </TASK> handlers: [<000000008f9bac49>] vp_interrupt [<000000008f9bac49>] vp_interrupt Disabling IRQ #22 This happens because we don't invoke .enable_cbs callback in virtio_device_restore(). That callback is used by some transports (e.g. virtio-pci) to enable interrupts. Let's fix it, by calling virtio_device_ready() as we do in virtio_dev_probe(). This function calls .enable_cts callback and sets DRIVER_OK status bit. This fix also avoids setting DRIVER_OK twice for those drivers that call virtio_device_ready() in the .restore.
Impacted products
Vendor Product Version
Linux Linux Affected: d50497eb4e554e1f0351e1836ee7241c059592e6 , < 94e9f5da39ee5f8ea31be1585de31c54f10dedce (git)
Affected: d50497eb4e554e1f0351e1836ee7241c059592e6 , < 4ae431113179d72c668b61df320af0c06d1aa5c5 (git)
Affected: d50497eb4e554e1f0351e1836ee7241c059592e6 , < 8d65bc9a5be3f23c5e2ab36b6b8ef40095165b18 (git)
Create a notification for this product.
Linux Linux Affected: 5.16
Unaffected: 0 , < 5.16 (semver)
Unaffected: 5.16.19 , ≤ 5.16.* (semver)
Unaffected: 5.17.2 , ≤ 5.17.* (semver)
Unaffected: 5.18 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/virtio/virtio.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "94e9f5da39ee5f8ea31be1585de31c54f10dedce",
              "status": "affected",
              "version": "d50497eb4e554e1f0351e1836ee7241c059592e6",
              "versionType": "git"
            },
            {
              "lessThan": "4ae431113179d72c668b61df320af0c06d1aa5c5",
              "status": "affected",
              "version": "d50497eb4e554e1f0351e1836ee7241c059592e6",
              "versionType": "git"
            },
            {
              "lessThan": "8d65bc9a5be3f23c5e2ab36b6b8ef40095165b18",
              "status": "affected",
              "version": "d50497eb4e554e1f0351e1836ee7241c059592e6",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/virtio/virtio.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.16"
            },
            {
              "lessThan": "5.16",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.16.*",
              "status": "unaffected",
              "version": "5.16.19",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.17.*",
              "status": "unaffected",
              "version": "5.17.2",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "5.18",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.16.19",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.17.2",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.18",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nvirtio: use virtio_device_ready() in virtio_device_restore()\n\nAfter waking up a suspended VM, the kernel prints the following trace\nfor virtio drivers which do not directly call virtio_device_ready() in\nthe .restore:\n\n    PM: suspend exit\n    irq 22: nobody cared (try booting with the \"irqpoll\" option)\n    Call Trace:\n     \u003cIRQ\u003e\n     dump_stack_lvl+0x38/0x49\n     dump_stack+0x10/0x12\n     __report_bad_irq+0x3a/0xaf\n     note_interrupt.cold+0xb/0x60\n     handle_irq_event+0x71/0x80\n     handle_fasteoi_irq+0x95/0x1e0\n     __common_interrupt+0x6b/0x110\n     common_interrupt+0x63/0xe0\n     asm_common_interrupt+0x1e/0x40\n     ? __do_softirq+0x75/0x2f3\n     irq_exit_rcu+0x93/0xe0\n     sysvec_apic_timer_interrupt+0xac/0xd0\n     \u003c/IRQ\u003e\n     \u003cTASK\u003e\n     asm_sysvec_apic_timer_interrupt+0x12/0x20\n     arch_cpu_idle+0x12/0x20\n     default_idle_call+0x39/0xf0\n     do_idle+0x1b5/0x210\n     cpu_startup_entry+0x20/0x30\n     start_secondary+0xf3/0x100\n     secondary_startup_64_no_verify+0xc3/0xcb\n     \u003c/TASK\u003e\n    handlers:\n    [\u003c000000008f9bac49\u003e] vp_interrupt\n    [\u003c000000008f9bac49\u003e] vp_interrupt\n    Disabling IRQ #22\n\nThis happens because we don\u0027t invoke .enable_cbs callback in\nvirtio_device_restore(). That callback is used by some transports\n(e.g. virtio-pci) to enable interrupts.\n\nLet\u0027s fix it, by calling virtio_device_ready() as we do in\nvirtio_dev_probe(). This function calls .enable_cts callback and sets\nDRIVER_OK status bit.\n\nThis fix also avoids setting DRIVER_OK twice for those drivers that\ncall virtio_device_ready() in the .restore."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-05-11T18:54:00.755Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/94e9f5da39ee5f8ea31be1585de31c54f10dedce"
        },
        {
          "url": "https://git.kernel.org/stable/c/4ae431113179d72c668b61df320af0c06d1aa5c5"
        },
        {
          "url": "https://git.kernel.org/stable/c/8d65bc9a5be3f23c5e2ab36b6b8ef40095165b18"
        }
      ],
      "title": "virtio: use virtio_device_ready() in virtio_device_restore()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2022-49146",
    "datePublished": "2025-02-26T01:55:14.849Z",
    "dateReserved": "2025-02-26T01:49:39.270Z",
    "dateUpdated": "2026-05-11T18:54:00.755Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2022-49146",
      "date": "2026-10-18",
      "epss": "0.00258",
      "percentile": "0.16305"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/virtio/virtio.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "94e9f5da39ee5f8ea31be1585de31c54f10dedce",
                    "status": "affected",
                    "version": "d50497eb4e554e1f0351e1836ee7241c059592e6",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4ae431113179d72c668b61df320af0c06d1aa5c5",
                    "status": "affected",
                    "version": "d50497eb4e554e1f0351e1836ee7241c059592e6",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "8d65bc9a5be3f23c5e2ab36b6b8ef40095165b18",
                    "status": "affected",
                    "version": "d50497eb4e554e1f0351e1836ee7241c059592e6",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/virtio/virtio.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "5.16"
                  },
                  {
                    "lessThan": "5.16",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.16.*",
                    "status": "unaffected",
                    "version": "5.16.19",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.17.*",
                    "status": "unaffected",
                    "version": "5.17.2",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "5.18",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "configurations": [
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "20C43679-0439-405A-B97F-685BEE50613B",
                    "versionEndExcluding": "5.16.19",
                    "versionStartIncluding": "5.16",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "210C679C-CF84-44A3-8939-E629C87E54BF",
                    "versionEndExcluding": "5.17.2",
                    "versionStartIncluding": "5.17",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nvirtio: use virtio_device_ready() in virtio_device_restore()\n\nAfter waking up a suspended VM, the kernel prints the following trace\nfor virtio drivers which do not directly call virtio_device_ready() in\nthe .restore:\n\n    PM: suspend exit\n    irq 22: nobody cared (try booting with the \"irqpoll\" option)\n    Call Trace:\n     \u003cIRQ\u003e\n     dump_stack_lvl+0x38/0x49\n     dump_stack+0x10/0x12\n     __report_bad_irq+0x3a/0xaf\n     note_interrupt.cold+0xb/0x60\n     handle_irq_event+0x71/0x80\n     handle_fasteoi_irq+0x95/0x1e0\n     __common_interrupt+0x6b/0x110\n     common_interrupt+0x63/0xe0\n     asm_common_interrupt+0x1e/0x40\n     ? __do_softirq+0x75/0x2f3\n     irq_exit_rcu+0x93/0xe0\n     sysvec_apic_timer_interrupt+0xac/0xd0\n     \u003c/IRQ\u003e\n     \u003cTASK\u003e\n     asm_sysvec_apic_timer_interrupt+0x12/0x20\n     arch_cpu_idle+0x12/0x20\n     default_idle_call+0x39/0xf0\n     do_idle+0x1b5/0x210\n     cpu_startup_entry+0x20/0x30\n     start_secondary+0xf3/0x100\n     secondary_startup_64_no_verify+0xc3/0xcb\n     \u003c/TASK\u003e\n    handlers:\n    [\u003c000000008f9bac49\u003e] vp_interrupt\n    [\u003c000000008f9bac49\u003e] vp_interrupt\n    Disabling IRQ #22\n\nThis happens because we don\u0027t invoke .enable_cbs callback in\nvirtio_device_restore(). That callback is used by some transports\n(e.g. virtio-pci) to enable interrupts.\n\nLet\u0027s fix it, by calling virtio_device_ready() as we do in\nvirtio_dev_probe(). This function calls .enable_cts callback and sets\nDRIVER_OK status bit.\n\nThis fix also avoids setting DRIVER_OK twice for those drivers that\ncall virtio_device_ready() in the .restore."
          },
          {
            "lang": "es",
            "value": "En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: virtio: usar virtio_device_ready() en virtio_device_restore() Despu\u00e9s de reactivar una m\u00e1quina virtual suspendida, el kernel imprime el siguiente seguimiento para los controladores virtio que no llaman directamente a virtio_device_ready() en .restore: PM: suspender salir irq 22: a nadie le import\u00f3 (intente arrancar con la opci\u00f3n \"irqpoll\") Seguimiento de llamada:  dump_stack_lvl+0x38/0x49 dump_stack+0x10/0x12 __report_bad_irq+0x3a/0xaf note_interrupt.cold+0xb/0x60 handle_irq_event+0x71/0x80 handle_fasteoi_irq+0x95/0x1e0 __common_interrupt+0x6b/0x110 common_interrupt+0x63/0xe0 asm_common_interrupt+0x1e/0x40 ? __do_softirq+0x75/0x2f3 irq_exit_rcu+0x93/0xe0 sysvec_apic_timer_interrupt+0xac/0xd0   asm_sysvec_apic_timer_interrupt+0x12/0x20 arch_cpu_idle+0x12/0x20 default_idle_call+0x39/0xf0 do_idle+0x1b5/0x210 cpu_startup_entry+0x20/0x30 start_secondary+0xf3/0x100 secondary_startup_64_no_verify+0xc3/0xcb  controladores: [\u0026lt;000000008f9bac49\u0026gt;] vp_interrupt [\u0026lt;000000008f9bac49\u0026gt;] vp_interrupt Deshabilitando IRQ #22 Esto sucede porque no invocamos la devoluci\u00f3n de llamada .enable_cbs en virtio_device_restore(). Esa devoluci\u00f3n de llamada es utilizada por algunos transportes (por ejemplo, virtio-pci) para habilitar interrupciones. Vamos a solucionarlo, llamando a virtio_device_ready() como lo hacemos en virtio_dev_probe(). Esta funci\u00f3n llama a la devoluci\u00f3n de llamada .enable_cts y establece el bit de estado DRIVER_OK. Esta soluci\u00f3n tambi\u00e9n evita configurar DRIVER_OK dos veces para aquellos controladores que llaman a virtio_device_ready() en .restore."
          }
        ],
        "id": "CVE-2022-49146",
        "lastModified": "2026-06-17T05:17:12.700",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 5.5,
                "baseSeverity": "MEDIUM",
                "confidentialityImpact": "NONE",
                "integrityImpact": "NONE",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 3.6,
              "source": "nvd@nist.gov",
              "type": "Primary"
            }
          ]
        },
        "published": "2025-02-26T07:00:51.793",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/4ae431113179d72c668b61df320af0c06d1aa5c5"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/8d65bc9a5be3f23c5e2ab36b6b8ef40095165b18"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/94e9f5da39ee5f8ea31be1585de31c54f10dedce"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Analyzed",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "NVD-CWE-noinfo"
              }
            ],
            "source": "nvd@nist.gov",
            "type": "Primary"
          }
        ]
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-06-30T10:39:21+00:00",
      "cve": "CVE-2022-49146",
      "id": "CVE-2022-49146",
      "initial_release_date": "2022-01-01T00:00:00+00:00",
      "product_status:known_affected": "42",
      "product_status:known_not_affected": "232",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: virtio: use virtio_device_ready() in virtio_device_restore()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2022/cve-2022-49146.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-10-16T14:28:34Z",
      "cve": "CVE-2022-49146",
      "id": "CVE-2022-49146",
      "initial_release_date": "2025-02-27T03:11:34Z",
      "product_status:known_affected": "0",
      "product_status:known_not_affected": "462",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2022-49146",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/2025/cve-2022-49146.json",
      "version": "16"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…