← Back to CVE Explorer

CVE-2026-74729

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: soc: aspeed: lpc-snoop: Fix usercopy overflow in snoop_file_read put_fifo_with_discard() acts as both producer and consumer on the kfifo: it calls kfifo_skip() (advances out) and kfifo_put() (advances in) from the IRQ handler without synchronizing with snoop_file_read(), which also consumes via kfifo_to_user(). On SMP systems this concurrent access can leave (in - out) larger than the ring buffer, so __kfifo_to_user()'s clamp to (in - out) is ineffective and kfifo_copy_to_user() can attempt a copy_to_user() past the kmalloc-2k backing store: usercopy: Kernel memory exposure attempt detected from SLUB object 'kmalloc-2k' (offset 0, size 2049)! kernel BUG at mm/usercopy.c! Call trace: usercopy_abort __check_heap_object __check_object_size kfifo_copy_to_user __kfifo_to_user snoop_file_read vfs_read Serialize kfifo access with a per-channel spinlock shared between the IRQ handler (producer) and the file reader (consumer). Annotate @fifo with __guarded_by(&lock) and opt the driver into context analysis so the compiler enforces that all fifo access holds the lock.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-08-22 16:16:48.033000
Last modified
2026-10-30 13:20:04.977000
View original CVE JSON
{
  "id": "CVE-2026-74729",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-08-22T16:16:48.033",
  "lastModified": "2026-10-30T13:20:04.977",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nsoc: aspeed: lpc-snoop: Fix usercopy overflow in snoop_file_read\n\nput_fifo_with_discard() acts as both producer and consumer on the kfifo:\nit calls kfifo_skip() (advances out) and kfifo_put() (advances in) from\nthe IRQ handler without synchronizing with snoop_file_read(), which also\nconsumes via kfifo_to_user(). On SMP systems this concurrent access can\nleave (in - out) larger than the ring buffer, so __kfifo_to_user()'s clamp\nto (in - out) is ineffective and kfifo_copy_to_user() can attempt a\ncopy_to_user() past the kmalloc-2k backing store:\n\n  usercopy: Kernel memory exposure attempt detected from SLUB object\n  'kmalloc-2k' (offset 0, size 2049)!\n  kernel BUG at mm/usercopy.c!\n  Call trace:\n   usercopy_abort\n   __check_heap_object\n   __check_object_size\n   kfifo_copy_to_user\n   __kfifo_to_user\n   snoop_file_read\n   vfs_read\n\nSerialize kfifo access with a per-channel spinlock shared between the\nIRQ handler (producer) and the file reader (consumer).  Annotate @fifo\nwith __guarded_by(&lock) and opt the driver into context analysis so the\ncompiler enforces that all fifo access holds the lock."
    },
    {
      "lang": "es",
      "value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\nsoc: aspeed: lpc-snoop: Corrección de desbordamiento de usercopy en snoop_file_read\n\nput_fifo_with_discard() actúa como productor y consumidor en el kfifo: llama a kfifo_skip() (avanza hacia afuera) y kfifo_put() (avanza hacia adentro) desde el gestor IRQ sin sincronizarse con snoop_file_read(), que también consume a través de kfifo_to_user(). En sistemas SMP, este acceso concurrente puede dejar (in - out) mayor que el búfer de anillo, por lo que la limitación de __kfifo_to_user() a (in - out) es ineficaz y kfifo_copy_to_user() puede intentar un copy_to_user() más allá del almacenamiento de respaldo kmalloc-2k:\n\n  usercopy: Intento de exposición de memoria del kernel detectado desde el objeto SLUB 'kmalloc-2k' (desplazamiento 0, tamaño 2049)!\n  BUG del kernel en mm/usercopy.c!\n  Traza de llamada:\n   usercopy_abort\n   __check_heap_object\n   __check_object_size\n   kfifo_copy_to_user\n   __kfifo_to_user\n   snoop_file_read\n   vfs_read\n\nSerializar el acceso al kfifo con un spinlock por canal compartido entre el gestor IRQ (productor) y el lector de archivos (consumidor). Anotar @fifo con __guarded_by(&lock) y optar por incluir el controlador en el análisis de contexto para que el compilador imponga que todo acceso al fifo mantenga el bloqueo."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "drivers/soc/aspeed/Makefile",
            "drivers/soc/aspeed/aspeed-lpc-snoop.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "3772e5da445420543b25825ac2b5971f3743f6e8",
              "lessThan": "f62afe827c52c300c64715631e6ac9e576c5112d",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "3772e5da445420543b25825ac2b5971f3743f6e8",
              "lessThan": "b87c0d24386ed5106feac12034fe09d893ccb469",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "3772e5da445420543b25825ac2b5971f3743f6e8",
              "lessThan": "afe2527eae0b51d5e8ddd77293afab3a5a1311a4",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "3772e5da445420543b25825ac2b5971f3743f6e8",
              "lessThan": "868c478abce858135db3eb65548a577e4b6747ac",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "3772e5da445420543b25825ac2b5971f3743f6e8",
              "lessThan": "131ab677b03349a5ae48da8722ec7075b37ec66e",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "3772e5da445420543b25825ac2b5971f3743f6e8",
              "lessThan": "1acef6d85bfd98bd9dfe1f08bffa397a4dda8a6f",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "drivers/soc/aspeed/Makefile",
            "drivers/soc/aspeed/aspeed-lpc-snoop.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "4.19",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "4.19",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.1.191",
              "lessThanOrEqual": "6.1.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.6.160",
              "lessThanOrEqual": "6.6.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.12.114",
              "lessThanOrEqual": "6.12.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.57",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.1.9",
              "lessThanOrEqual": "7.1.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/131ab677b03349a5ae48da8722ec7075b37ec66e",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/1acef6d85bfd98bd9dfe1f08bffa397a4dda8a6f",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/868c478abce858135db3eb65548a577e4b6747ac",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/afe2527eae0b51d5e8ddd77293afab3a5a1311a4",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/b87c0d24386ed5106feac12034fe09d893ccb469",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/f62afe827c52c300c64715631e6ac9e576c5112d",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}