← Back to CVE Explorer

CVE-2023-54232

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: m68k: Only force 030 bus error if PC not in exception table __get_kernel_nofault() does copy data in supervisor mode when forcing a task backtrace log through /proc/sysrq_trigger. This is expected cause a bus error exception on e.g. NULL pointer dereferencing when logging a kernel task has no workqueue associated. This bus error ought to be ignored. Our 030 bus error handler is ill equipped to deal with this: Whenever ssw indicates a kernel mode access on a data fault, we don't even attempt to handle the fault and instead always send a SEGV signal (or panic). As a result, the check for exception handling at the fault PC (buried in send_sig_fault() which gets called from do_page_fault() eventually) is never used. In contrast, both 040 and 060 access error handlers do not care whether a fault happened on supervisor mode access, and will call do_page_fault() on those, ultimately honoring the exception table. Add a check in bus_error030 to call do_page_fault() in case we do have an entry for the fault PC in our exception table. I had attempted a fix for this earlier in 2019 that did rely on testing pagefault_disabled() (see link below) to achieve the same thing, but this patch should be more generic. Tested on 030 Atari Falcon.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Deferred
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2025-12-30 13:16:11.623000
Last modified
2026-10-28 19:10:00.193000
View original CVE JSON
{
  "id": "CVE-2023-54232",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2025-12-30T13:16:11.623",
  "lastModified": "2026-10-28T19:10:00.193",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nm68k: Only force 030 bus error if PC not in exception table\n\n__get_kernel_nofault() does copy data in supervisor mode when\nforcing a task backtrace log through /proc/sysrq_trigger.\nThis is expected cause a bus error exception on e.g. NULL\npointer dereferencing when logging a kernel task has no\nworkqueue associated. This bus error ought to be ignored.\n\nOur 030 bus error handler is ill equipped to deal with this:\n\nWhenever ssw indicates a kernel mode access on a data fault,\nwe don't even attempt to handle the fault and instead always\nsend a SEGV signal (or panic). As a result, the check\nfor exception handling at the fault PC (buried in\nsend_sig_fault() which gets called from do_page_fault()\neventually) is never used.\n\nIn contrast, both 040 and 060 access error handlers do not\ncare whether a fault happened on supervisor mode access,\nand will call do_page_fault() on those, ultimately honoring\nthe exception table.\n\nAdd a check in bus_error030 to call do_page_fault() in case\nwe do have an entry for the fault PC in our exception table.\n\nI had attempted a fix for this earlier in 2019 that did rely\non testing pagefault_disabled() (see link below) to achieve\nthe same thing, but this patch should be more generic.\n\nTested on 030 Atari Falcon."
    },
    {
      "lang": "es",
      "value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\nm68k: Solo forzar error de bus 030 si el PC no está en la tabla de excepciones\n\n__get_kernel_nofault() copia datos en modo supervisor al forzar un registro de rastreo de pila de tareas a través de /proc/sysrq_trigger. Se espera que esto cause una excepción de error de bus, por ejemplo, en la desreferenciación de puntero NULL cuando el registro de una tarea del kernel no tiene una cola de trabajo asociada. Este error de bus debería ser ignorado.\n\nNuestro manejador de errores de bus 030 está mal equipado para lidiar con esto:\n\nSiempre que ssw indica un acceso en modo kernel en un fallo de datos, ni siquiera intentamos manejar el fallo y en su lugar siempre enviamos una señal SEGV (o pánico). Como resultado, la verificación para el manejo de excepciones en el PC del fallo (oculta en send_sig_fault() que es llamada por do_page_fault() eventualmente) nunca se utiliza.\n\nEn contraste, ambos manejadores de errores de acceso 040 y 060 no se preocupan si ocurrió un fallo en un acceso en modo supervisor, y llamarán a do_page_fault() en esos casos, respetando en última instancia la tabla de excepciones.\n\nAñadir una verificación en bus_error030 para llamar a do_page_fault() en caso de que tengamos una entrada para el PC del fallo en nuestra tabla de excepciones.\n\nHabía intentado una solución para esto a principios de 2019 que se basaba en probar pagefault_disabled() (ver enlace abajo) para lograr lo mismo, pero este parche debería ser más genérico.\n\nProbado en 030 Atari Falcon."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "arch/m68k/kernel/traps.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "f2325ecebc5b7988fd49968bd3a660fd1594dc84",
              "lessThan": "1a6059f5ed57f48edfe7159404ff7d538d9d405b",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "f2325ecebc5b7988fd49968bd3a660fd1594dc84",
              "lessThan": "f55cb52ec98b22125f5bda36391edb8894f7e8cf",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "f2325ecebc5b7988fd49968bd3a660fd1594dc84",
              "lessThan": "2100e374251a8fc00cce1916cfc50f3cb652cbe3",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "f2325ecebc5b7988fd49968bd3a660fd1594dc84",
              "lessThan": "df1da53a7e98f0b2a0eb2241c154f148f2f2c1d8",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "f2325ecebc5b7988fd49968bd3a660fd1594dc84",
              "lessThan": "8bf8d5dade4c5e1d8a2386f29253ed28b5d87735",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "f2325ecebc5b7988fd49968bd3a660fd1594dc84",
              "lessThan": "54fa25ffab2b700df5abd58c136d64a912c53953",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "f2325ecebc5b7988fd49968bd3a660fd1594dc84",
              "lessThan": "ec15405b80fc15ffc87a23d01378ae061c1aba07",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "f2325ecebc5b7988fd49968bd3a660fd1594dc84",
              "lessThan": "e36a82bebbf7da814530d5a179bef9df5934b717",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "arch/m68k/kernel/traps.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "2.6.18",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "2.6.18",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "4.14.312",
              "lessThanOrEqual": "4.14.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "4.19.280",
              "lessThanOrEqual": "4.19.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.4.240",
              "lessThanOrEqual": "5.4.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.10.177",
              "lessThanOrEqual": "5.10.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.15.105",
              "lessThanOrEqual": "5.15.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.1.22",
              "lessThanOrEqual": "6.1.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.2.9",
              "lessThanOrEqual": "6.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.3",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/1a6059f5ed57f48edfe7159404ff7d538d9d405b",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/2100e374251a8fc00cce1916cfc50f3cb652cbe3",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/54fa25ffab2b700df5abd58c136d64a912c53953",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/8bf8d5dade4c5e1d8a2386f29253ed28b5d87735",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/df1da53a7e98f0b2a0eb2241c154f148f2f2c1d8",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/e36a82bebbf7da814530d5a179bef9df5934b717",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/ec15405b80fc15ffc87a23d01378ae061c1aba07",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/f55cb52ec98b22125f5bda36391edb8894f7e8cf",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}