CVE-2024-57838 (GCVE-0-2024-57838)
Vulnerability from cvelistv5
Published
2025-01-11 14:08
Modified
2025-05-04 10:05
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: s390/entry: Mark IRQ entries to fix stack depot warnings The stack depot filters out everything outside of the top interrupt context as an uninteresting or irrelevant part of the stack traces. This helps with stack trace de-duplication, avoiding an explosion of saved stack traces that share the same IRQ context code path but originate from different randomly interrupted points, eventually exhausting the stack depot. Filtering uses in_irqentry_text() to identify functions within the .irqentry.text and .softirqentry.text sections, which then become the last stack trace entries being saved. While __do_softirq() is placed into the .softirqentry.text section by common code, populating .irqentry.text is architecture-specific. Currently, the .irqentry.text section on s390 is empty, which prevents stack depot filtering and de-duplication and could result in warnings like: Stack depot reached limit capacity WARNING: CPU: 0 PID: 286113 at lib/stackdepot.c:252 depot_alloc_stack+0x39a/0x3c8 with PREEMPT and KASAN enabled. Fix this by moving the IO/EXT interrupt handlers from .kprobes.text into the .irqentry.text section and updating the kprobes blacklist to include the .irqentry.text section. This is done only for asynchronous interrupts and explicitly not for program checks, which are synchronous and where the context beyond the program check is important to preserve. Despite machine checks being somewhat in between, they are extremely rare, and preserving context when possible is also of value. SVCs and Restart Interrupts are not relevant, one being always at the boundary to user space and the other being a one-time thing. IRQ entries filtering is also optionally used in ftrace function graph, where the same logic applies.
Impacted products
Vendor Product Version
Linux Linux Version: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
Version: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
Version: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
Version: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
Version: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "arch/s390/kernel/entry.S",
            "arch/s390/kernel/kprobes.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "ca687fdce5b95f84d91d6e36ac77047771eb3dfc",
              "status": "affected",
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "versionType": "git"
            },
            {
              "lessThan": "5bb7a2c3afcf8732dc65ea49c09147b07da1d993",
              "status": "affected",
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "versionType": "git"
            },
            {
              "lessThan": "1af22528fee8072b7adc007b8ca49cc4ea62689e",
              "status": "affected",
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "versionType": "git"
            },
            {
              "lessThan": "473ffae3030188f1c6b80e1b3631a26b4adf7b32",
              "status": "affected",
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "versionType": "git"
            },
            {
              "lessThan": "45c9f2b856a075a34873d00788d2e8a250c1effd",
              "status": "affected",
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "arch/s390/kernel/entry.S",
            "arch/s390/kernel/kprobes.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.174",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.120",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.64",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.13",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.174",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.120",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.64",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.13",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ns390/entry: Mark IRQ entries to fix stack depot warnings\n\nThe stack depot filters out everything outside of the top interrupt\ncontext as an uninteresting or irrelevant part of the stack traces. This\nhelps with stack trace de-duplication, avoiding an explosion of saved\nstack traces that share the same IRQ context code path but originate\nfrom different randomly interrupted points, eventually exhausting the\nstack depot.\n\nFiltering uses in_irqentry_text() to identify functions within the\n.irqentry.text and .softirqentry.text sections, which then become the\nlast stack trace entries being saved.\n\nWhile __do_softirq() is placed into the .softirqentry.text section by\ncommon code, populating .irqentry.text is architecture-specific.\n\nCurrently, the .irqentry.text section on s390 is empty, which prevents\nstack depot filtering and de-duplication and could result in warnings\nlike:\n\nStack depot reached limit capacity\nWARNING: CPU: 0 PID: 286113 at lib/stackdepot.c:252 depot_alloc_stack+0x39a/0x3c8\n\nwith PREEMPT and KASAN enabled.\n\nFix this by moving the IO/EXT interrupt handlers from .kprobes.text into\nthe .irqentry.text section and updating the kprobes blacklist to include\nthe .irqentry.text section.\n\nThis is done only for asynchronous interrupts and explicitly not for\nprogram checks, which are synchronous and where the context beyond the\nprogram check is important to preserve. Despite machine checks being\nsomewhat in between, they are extremely rare, and preserving context\nwhen possible is also of value.\n\nSVCs and Restart Interrupts are not relevant, one being always at the\nboundary to user space and the other being a one-time thing.\n\nIRQ entries filtering is also optionally used in ftrace function graph,\nwhere the same logic applies."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2025-05-04T10:05:19.619Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/ca687fdce5b95f84d91d6e36ac77047771eb3dfc"
        },
        {
          "url": "https://git.kernel.org/stable/c/5bb7a2c3afcf8732dc65ea49c09147b07da1d993"
        },
        {
          "url": "https://git.kernel.org/stable/c/1af22528fee8072b7adc007b8ca49cc4ea62689e"
        },
        {
          "url": "https://git.kernel.org/stable/c/473ffae3030188f1c6b80e1b3631a26b4adf7b32"
        },
        {
          "url": "https://git.kernel.org/stable/c/45c9f2b856a075a34873d00788d2e8a250c1effd"
        }
      ],
      "title": "s390/entry: Mark IRQ entries to fix stack depot warnings",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-57838",
    "datePublished": "2025-01-11T14:08:56.951Z",
    "dateReserved": "2025-01-11T12:32:49.349Z",
    "dateUpdated": "2025-05-04T10:05:19.619Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.1",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2024-57838\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-01-11T14:15:25.940\",\"lastModified\":\"2025-01-11T14:15:25.940\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\ns390/entry: Mark IRQ entries to fix stack depot warnings\\n\\nThe stack depot filters out everything outside of the top interrupt\\ncontext as an uninteresting or irrelevant part of the stack traces. This\\nhelps with stack trace de-duplication, avoiding an explosion of saved\\nstack traces that share the same IRQ context code path but originate\\nfrom different randomly interrupted points, eventually exhausting the\\nstack depot.\\n\\nFiltering uses in_irqentry_text() to identify functions within the\\n.irqentry.text and .softirqentry.text sections, which then become the\\nlast stack trace entries being saved.\\n\\nWhile __do_softirq() is placed into the .softirqentry.text section by\\ncommon code, populating .irqentry.text is architecture-specific.\\n\\nCurrently, the .irqentry.text section on s390 is empty, which prevents\\nstack depot filtering and de-duplication and could result in warnings\\nlike:\\n\\nStack depot reached limit capacity\\nWARNING: CPU: 0 PID: 286113 at lib/stackdepot.c:252 depot_alloc_stack+0x39a/0x3c8\\n\\nwith PREEMPT and KASAN enabled.\\n\\nFix this by moving the IO/EXT interrupt handlers from .kprobes.text into\\nthe .irqentry.text section and updating the kprobes blacklist to include\\nthe .irqentry.text section.\\n\\nThis is done only for asynchronous interrupts and explicitly not for\\nprogram checks, which are synchronous and where the context beyond the\\nprogram check is important to preserve. Despite machine checks being\\nsomewhat in between, they are extremely rare, and preserving context\\nwhen possible is also of value.\\n\\nSVCs and Restart Interrupts are not relevant, one being always at the\\nboundary to user space and the other being a one-time thing.\\n\\nIRQ entries filtering is also optionally used in ftrace function graph,\\nwhere the same logic applies.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: s390/entry: Marcar entradas de IRQ para corregir advertencias del dep\u00f3sito de pila El dep\u00f3sito de pila filtra todo lo que est\u00e9 fuera del contexto de interrupci\u00f3n superior como una parte poco interesante o irrelevante de los seguimientos de pila. Esto ayuda con la desduplicaci\u00f3n del seguimiento de pila, evitando una explosi\u00f3n de seguimientos de pila guardados que comparten la misma ruta de c\u00f3digo de contexto de IRQ pero que se originan en diferentes puntos interrumpidos aleatoriamente, agotando eventualmente el dep\u00f3sito de pila. El filtrado utiliza in_irqentry_text() para identificar funciones dentro de las secciones .irqentry.text y .softirqentry.text, que luego se convierten en las \u00faltimas entradas del seguimiento de pila que se guardan. Si bien __do_softirq() se coloca en la secci\u00f3n .softirqentry.text por c\u00f3digo com\u00fan, completar .irqentry.text es espec\u00edfico de la arquitectura. Actualmente, la secci\u00f3n .irqentry.text en s390 est\u00e1 vac\u00eda, lo que impide el filtrado y la deduplicaci\u00f3n del dep\u00f3sito de pila y podr\u00eda generar advertencias como: El dep\u00f3sito de pila alcanz\u00f3 la capacidad l\u00edmite ADVERTENCIA: CPU: 0 PID: 286113 en lib/stackdepot.c:252 depot_alloc_stack+0x39a/0x3c8 con PREEMPT y KASAN habilitados. Solucione esto moviendo los controladores de interrupci\u00f3n IO/EXT de .kprobes.text a la secci\u00f3n .irqentry.text y actualizando la lista negra de kprobes para incluir la secci\u00f3n .irqentry.text. Esto se hace solo para interrupciones asincr\u00f3nicas y expl\u00edcitamente no para verificaciones de programa, que son sincr\u00f3nicas y donde es importante preservar el contexto m\u00e1s all\u00e1 de la verificaci\u00f3n de programa. A pesar de que las verificaciones de m\u00e1quina est\u00e1n algo en el medio, son extremadamente raras y preservar el contexto cuando sea posible tambi\u00e9n es valioso. Los SVC y las interrupciones de reinicio no son relevantes, uno siempre se encuentra en el l\u00edmite del espacio del usuario y el otro es algo que ocurre una sola vez. El filtrado de entradas IRQ tambi\u00e9n se utiliza de manera opcional en el gr\u00e1fico de funciones ftrace, donde se aplica la misma l\u00f3gica.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/1af22528fee8072b7adc007b8ca49cc4ea62689e\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/45c9f2b856a075a34873d00788d2e8a250c1effd\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/473ffae3030188f1c6b80e1b3631a26b4adf7b32\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/5bb7a2c3afcf8732dc65ea49c09147b07da1d993\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/ca687fdce5b95f84d91d6e36ac77047771eb3dfc\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…