Vulnerabilities

With the aim of informing, warning and helping professionals with the latest security vulnerabilities in technology systems, we have made a database available for users interested in this information, which is in Spanish and includes all of the latest documented and recognised vulnerabilities.

This repository, with over 75,000 registers, is based on the information from the NVD (National Vulnerability Database) – by virtue of a partnership agreement – through which INCIBE translates the included information into Spanish.

On occasions this list will show vulnerabilities that have still not been translated, as they are added while the INCIBE team is still carrying out the translation process. The CVE  (Common Vulnerabilities and Exposures) Standard for Information Security Vulnerability Names is used with the aim to support the exchange of information between different tools and databases.

All vulnerabilities collected are linked to different information sources, as well as available patches or solutions provided by manufacturers and developers. It is possible to carry out advanced searches, as there is the option to select different criteria to narrow down the results, some examples being vulnerability types, manufacturers and impact levels, among others.

Through RSS feeds or Newsletters we can be informed daily about the latest vulnerabilities added to the repository. Below there is a list, updated daily, where you can discover the latest vulnerabilities.

CVE-2025-21953

Publication date:
01/04/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> net: mana: cleanup mana struct after debugfs_remove()<br /> <br /> When on a MANA VM hibernation is triggered, as part of hibernate_snapshot(),<br /> mana_gd_suspend() and mana_gd_resume() are called. If during this<br /> mana_gd_resume(), a failure occurs with HWC creation, mana_port_debugfs<br /> pointer does not get reinitialized and ends up pointing to older,<br /> cleaned-up dentry.<br /> Further in the hibernation path, as part of power_down(), mana_gd_shutdown()<br /> is triggered. This call, unaware of the failures in resume, tries to cleanup<br /> the already cleaned up mana_port_debugfs value and hits the following bug:<br /> <br /> [ 191.359296] mana 7870:00:00.0: Shutdown was called<br /> [ 191.359918] BUG: kernel NULL pointer dereference, address: 0000000000000098<br /> [ 191.360584] #PF: supervisor write access in kernel mode<br /> [ 191.361125] #PF: error_code(0x0002) - not-present page<br /> [ 191.361727] PGD 1080ea067 P4D 0<br /> [ 191.362172] Oops: Oops: 0002 [#1] SMP NOPTI<br /> [ 191.362606] CPU: 11 UID: 0 PID: 1674 Comm: bash Not tainted 6.14.0-rc5+ #2<br /> [ 191.363292] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release v4.1 11/21/2024<br /> [ 191.364124] RIP: 0010:down_write+0x19/0x50<br /> [ 191.364537] Code: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 53 48 89 fb e8 de cd ff ff 31 c0 ba 01 00 00 00 48 0f b1 13 75 16 65 48 8b 05 88 24 4c 6a 48 89 43 08 48 8b 5d<br /> [ 191.365867] RSP: 0000:ff45fbe0c1c037b8 EFLAGS: 00010246<br /> [ 191.366350] RAX: 0000000000000000 RBX: 0000000000000098 RCX: ffffff8100000000<br /> [ 191.366951] RDX: 0000000000000001 RSI: 0000000000000064 RDI: 0000000000000098<br /> [ 191.367600] RBP: ff45fbe0c1c037c0 R08: 0000000000000000 R09: 0000000000000001<br /> [ 191.368225] R10: ff45fbe0d2b01000 R11: 0000000000000008 R12: 0000000000000000<br /> [ 191.368874] R13: 000000000000000b R14: ff43dc27509d67c0 R15: 0000000000000020<br /> [ 191.369549] FS: 00007dbc5001e740(0000) GS:ff43dc663f380000(0000) knlGS:0000000000000000<br /> [ 191.370213] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br /> [ 191.370830] CR2: 0000000000000098 CR3: 0000000168e8e002 CR4: 0000000000b73ef0<br /> [ 191.371557] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000<br /> [ 191.372192] DR3: 0000000000000000 DR6: 00000000fffe07f0 DR7: 0000000000000400<br /> [ 191.372906] Call Trace:<br /> [ 191.373262] <br /> [ 191.373621] ? show_regs+0x64/0x70<br /> [ 191.374040] ? __die+0x24/0x70<br /> [ 191.374468] ? page_fault_oops+0x290/0x5b0<br /> [ 191.374875] ? do_user_addr_fault+0x448/0x800<br /> [ 191.375357] ? exc_page_fault+0x7a/0x160<br /> [ 191.375971] ? asm_exc_page_fault+0x27/0x30<br /> [ 191.376416] ? down_write+0x19/0x50<br /> [ 191.376832] ? down_write+0x12/0x50<br /> [ 191.377232] simple_recursive_removal+0x4a/0x2a0<br /> [ 191.377679] ? __pfx_remove_one+0x10/0x10<br /> [ 191.378088] debugfs_remove+0x44/0x70<br /> [ 191.378530] mana_detach+0x17c/0x4f0<br /> [ 191.378950] ? __flush_work+0x1e2/0x3b0<br /> [ 191.379362] ? __cond_resched+0x1a/0x50<br /> [ 191.379787] mana_remove+0xf2/0x1a0<br /> [ 191.380193] mana_gd_shutdown+0x3b/0x70<br /> [ 191.380642] pci_device_shutdown+0x3a/0x80<br /> [ 191.381063] device_shutdown+0x13e/0x230<br /> [ 191.381480] kernel_power_off+0x35/0x80<br /> [ 191.381890] hibernate+0x3c6/0x470<br /> [ 191.382312] state_store+0xcb/0xd0<br /> [ 191.382734] kobj_attr_store+0x12/0x30<br /> [ 191.383211] sysfs_kf_write+0x3e/0x50<br /> [ 191.383640] kernfs_fop_write_iter+0x140/0x1d0<br /> [ 191.384106] vfs_write+0x271/0x440<br /> [ 191.384521] ksys_write+0x72/0xf0<br /> [ 191.384924] __x64_sys_write+0x19/0x20<br /> [ 191.385313] x64_sys_call+0x2b0/0x20b0<br /> [ 191.385736] do_syscall_64+0x79/0x150<br /> [ 191.386146] ? __mod_memcg_lruvec_state+0xe7/0x240<br /> [ 191.386676] ? __lruvec_stat_mod_folio+0x79/0xb0<br /> [ 191.387124] ? __pfx_lru_add+0x10/0x10<br /> [ 191.387515] ? queued_spin_unlock+0x9/0x10<br /> [ 191.387937] ? do_anonymous_page+0x33c/0xa00<br /> [ 191.388374] ? __handle_mm_fault+0xcf3/0x1210<br /> [ 191.388805] ? __count_memcg_events+0xbe/0x180<br /> [ 191.389235] ? handle_mm_fault+0xae/0x300<br /> [ 19<br /> ---truncated---
Severity CVSS v4.0: Pending analysis
Last modification:
11/04/2025

CVE-2025-21944

Publication date:
01/04/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> ksmbd: fix bug on trap in smb2_lock<br /> <br /> If lock count is greater than 1, flags could be old value.<br /> It should be checked with flags of smb_lock, not flags.<br /> It will cause bug-on trap from locks_free_lock in error handling<br /> routine.
Severity CVSS v4.0: Pending analysis
Last modification:
01/04/2025

CVE-2025-21946

Publication date:
01/04/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> ksmbd: fix out-of-bounds in parse_sec_desc()<br /> <br /> If osidoffset, gsidoffset and dacloffset could be greater than smb_ntsd<br /> struct size. If it is smaller, It could cause slab-out-of-bounds.<br /> And when validating sid, It need to check it included subauth array size.
Severity CVSS v4.0: Pending analysis
Last modification:
01/04/2025

CVE-2025-21947

Publication date:
01/04/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> ksmbd: fix type confusion via race condition when using ipc_msg_send_request<br /> <br /> req-&gt;handle is allocated using ksmbd_acquire_id(&amp;ipc_ida), based on<br /> ida_alloc. req-&gt;handle from ksmbd_ipc_login_request and<br /> FSCTL_PIPE_TRANSCEIVE ioctl can be same and it could lead to type confusion<br /> between messages, resulting in access to unexpected parts of memory after<br /> an incorrect delivery. ksmbd check type of ipc response but missing add<br /> continue to check next ipc reponse.
Severity CVSS v4.0: Pending analysis
Last modification:
10/04/2025

CVE-2025-21943

Publication date:
01/04/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> gpio: aggregator: protect driver attr handlers against module unload<br /> <br /> Both new_device_store and delete_device_store touch module global<br /> resources (e.g. gpio_aggregator_lock). To prevent race conditions with<br /> module unload, a reference needs to be held.<br /> <br /> Add try_module_get() in these handlers.<br /> <br /> For new_device_store, this eliminates what appears to be the most dangerous<br /> scenario: if an id is allocated from gpio_aggregator_idr but<br /> platform_device_register has not yet been called or completed, a concurrent<br /> module unload could fail to unregister/delete the device, leaving behind a<br /> dangling platform device/GPIO forwarder. This can result in various issues.<br /> The following simple reproducer demonstrates these problems:<br /> <br /> #!/bin/bash<br /> while :; do<br /> # note: whether &amp;#39;gpiochip0 0&amp;#39; exists or not does not matter.<br /> echo &amp;#39;gpiochip0 0&amp;#39; &gt; /sys/bus/platform/drivers/gpio-aggregator/new_device<br /> done &amp;<br /> while :; do<br /> modprobe gpio-aggregator<br /> modprobe -r gpio-aggregator<br /> done &amp;<br /> wait<br /> <br /> Starting with the following warning, several kinds of warnings will appear<br /> and the system may become unstable:<br /> <br /> ------------[ cut here ]------------<br /> list_del corruption, ffff888103e2e980-&gt;next is LIST_POISON1 (dead000000000100)<br /> WARNING: CPU: 1 PID: 1327 at lib/list_debug.c:56 __list_del_entry_valid_or_report+0xa3/0x120<br /> [...]<br /> RIP: 0010:__list_del_entry_valid_or_report+0xa3/0x120<br /> [...]<br /> Call Trace:<br /> <br /> ? __list_del_entry_valid_or_report+0xa3/0x120<br /> ? __warn.cold+0x93/0xf2<br /> ? __list_del_entry_valid_or_report+0xa3/0x120<br /> ? report_bug+0xe6/0x170<br /> ? __irq_work_queue_local+0x39/0xe0<br /> ? handle_bug+0x58/0x90<br /> ? exc_invalid_op+0x13/0x60<br /> ? asm_exc_invalid_op+0x16/0x20<br /> ? __list_del_entry_valid_or_report+0xa3/0x120<br /> gpiod_remove_lookup_table+0x22/0x60<br /> new_device_store+0x315/0x350 [gpio_aggregator]<br /> kernfs_fop_write_iter+0x137/0x1f0<br /> vfs_write+0x262/0x430<br /> ksys_write+0x60/0xd0<br /> do_syscall_64+0x6c/0x180<br /> entry_SYSCALL_64_after_hwframe+0x76/0x7e<br /> [...]<br /> <br /> ---[ end trace 0000000000000000 ]---
Severity CVSS v4.0: Pending analysis
Last modification:
10/04/2025

CVE-2025-21945

Publication date:
01/04/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> ksmbd: fix use-after-free in smb2_lock<br /> <br /> If smb_lock-&gt;zero_len has value, -&gt;llist of smb_lock is not delete and<br /> flock is old one. It will cause use-after-free on error handling<br /> routine.
Severity CVSS v4.0: Pending analysis
Last modification:
16/04/2025

CVE-2025-21948

Publication date:
01/04/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> HID: appleir: Fix potential NULL dereference at raw event handle<br /> <br /> Syzkaller reports a NULL pointer dereference issue in input_event().<br /> <br /> BUG: KASAN: null-ptr-deref in instrument_atomic_read include/linux/instrumented.h:68 [inline]<br /> BUG: KASAN: null-ptr-deref in _test_bit include/asm-generic/bitops/instrumented-non-atomic.h:141 [inline]<br /> BUG: KASAN: null-ptr-deref in is_event_supported drivers/input/input.c:67 [inline]<br /> BUG: KASAN: null-ptr-deref in input_event+0x42/0xa0 drivers/input/input.c:395<br /> Read of size 8 at addr 0000000000000028 by task syz-executor199/2949<br /> <br /> CPU: 0 UID: 0 PID: 2949 Comm: syz-executor199 Not tainted 6.13.0-rc4-syzkaller-00076-gf097a36ef88d #0<br /> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024<br /> Call Trace:<br /> <br /> __dump_stack lib/dump_stack.c:94 [inline]<br /> dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120<br /> kasan_report+0xd9/0x110 mm/kasan/report.c:602<br /> check_region_inline mm/kasan/generic.c:183 [inline]<br /> kasan_check_range+0xef/0x1a0 mm/kasan/generic.c:189<br /> instrument_atomic_read include/linux/instrumented.h:68 [inline]<br /> _test_bit include/asm-generic/bitops/instrumented-non-atomic.h:141 [inline]<br /> is_event_supported drivers/input/input.c:67 [inline]<br /> input_event+0x42/0xa0 drivers/input/input.c:395<br /> input_report_key include/linux/input.h:439 [inline]<br /> key_down drivers/hid/hid-appleir.c:159 [inline]<br /> appleir_raw_event+0x3e5/0x5e0 drivers/hid/hid-appleir.c:232<br /> __hid_input_report.constprop.0+0x312/0x440 drivers/hid/hid-core.c:2111<br /> hid_ctrl+0x49f/0x550 drivers/hid/usbhid/hid-core.c:484<br /> __usb_hcd_giveback_urb+0x389/0x6e0 drivers/usb/core/hcd.c:1650<br /> usb_hcd_giveback_urb+0x396/0x450 drivers/usb/core/hcd.c:1734<br /> dummy_timer+0x17f7/0x3960 drivers/usb/gadget/udc/dummy_hcd.c:1993<br /> __run_hrtimer kernel/time/hrtimer.c:1739 [inline]<br /> __hrtimer_run_queues+0x20a/0xae0 kernel/time/hrtimer.c:1803<br /> hrtimer_run_softirq+0x17d/0x350 kernel/time/hrtimer.c:1820<br /> handle_softirqs+0x206/0x8d0 kernel/softirq.c:561<br /> __do_softirq kernel/softirq.c:595 [inline]<br /> invoke_softirq kernel/softirq.c:435 [inline]<br /> __irq_exit_rcu+0xfa/0x160 kernel/softirq.c:662<br /> irq_exit_rcu+0x9/0x30 kernel/softirq.c:678<br /> instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1049 [inline]<br /> sysvec_apic_timer_interrupt+0x90/0xb0 arch/x86/kernel/apic/apic.c:1049<br /> <br /> <br /> asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702<br /> __mod_timer+0x8f6/0xdc0 kernel/time/timer.c:1185<br /> add_timer+0x62/0x90 kernel/time/timer.c:1295<br /> schedule_timeout+0x11f/0x280 kernel/time/sleep_timeout.c:98<br /> usbhid_wait_io+0x1c7/0x380 drivers/hid/usbhid/hid-core.c:645<br /> usbhid_init_reports+0x19f/0x390 drivers/hid/usbhid/hid-core.c:784<br /> hiddev_ioctl+0x1133/0x15b0 drivers/hid/usbhid/hiddev.c:794<br /> vfs_ioctl fs/ioctl.c:51 [inline]<br /> __do_sys_ioctl fs/ioctl.c:906 [inline]<br /> __se_sys_ioctl fs/ioctl.c:892 [inline]<br /> __x64_sys_ioctl+0x190/0x200 fs/ioctl.c:892<br /> do_syscall_x64 arch/x86/entry/common.c:52 [inline]<br /> do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83<br /> entry_SYSCALL_64_after_hwframe+0x77/0x7f<br /> <br /> <br /> This happens due to the malformed report items sent by the emulated device<br /> which results in a report, that has no fields, being added to the report list.<br /> Due to this appleir_input_configured() is never called, hidinput_connect()<br /> fails which results in the HID_CLAIMED_INPUT flag is not being set. However,<br /> it does not make appleir_probe() fail and lets the event callback to be<br /> called without the associated input device.<br /> <br /> Thus, add a check for the HID_CLAIMED_INPUT flag and leave the event hook<br /> early if the driver didn&amp;#39;t claim any input_dev for some reason. Moreover,<br /> some other hid drivers accessing input_dev in their event callbacks do have<br /> similar checks, too.<br /> <br /> Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
Severity CVSS v4.0: Pending analysis
Last modification:
11/04/2025

CVE-2025-21942

Publication date:
01/04/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> btrfs: zoned: fix extent range end unlock in cow_file_range()<br /> <br /> Running generic/751 on the for-next branch often results in a hang like<br /> below. They are both stack by locking an extent. This suggests someone<br /> forget to unlock an extent.<br /> <br /> INFO: task kworker/u128:1:12 blocked for more than 323 seconds.<br /> Not tainted 6.13.0-BTRFS-ZNS+ #503<br /> "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message.<br /> task:kworker/u128:1 state:D stack:0 pid:12 tgid:12 ppid:2 flags:0x00004000<br /> Workqueue: btrfs-fixup btrfs_work_helper [btrfs]<br /> Call Trace:<br /> <br /> __schedule+0x534/0xdd0<br /> schedule+0x39/0x140<br /> __lock_extent+0x31b/0x380 [btrfs]<br /> ? __pfx_autoremove_wake_function+0x10/0x10<br /> btrfs_writepage_fixup_worker+0xf1/0x3a0 [btrfs]<br /> btrfs_work_helper+0xff/0x480 [btrfs]<br /> ? lock_release+0x178/0x2c0<br /> process_one_work+0x1ee/0x570<br /> ? srso_return_thunk+0x5/0x5f<br /> worker_thread+0x1d1/0x3b0<br /> ? __pfx_worker_thread+0x10/0x10<br /> kthread+0x10b/0x230<br /> ? __pfx_kthread+0x10/0x10<br /> ret_from_fork+0x30/0x50<br /> ? __pfx_kthread+0x10/0x10<br /> ret_from_fork_asm+0x1a/0x30<br /> <br /> INFO: task kworker/u134:0:184 blocked for more than 323 seconds.<br /> Not tainted 6.13.0-BTRFS-ZNS+ #503<br /> "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message.<br /> task:kworker/u134:0 state:D stack:0 pid:184 tgid:184 ppid:2 flags:0x00004000<br /> Workqueue: writeback wb_workfn (flush-btrfs-4)<br /> Call Trace:<br /> <br /> __schedule+0x534/0xdd0<br /> schedule+0x39/0x140<br /> __lock_extent+0x31b/0x380 [btrfs]<br /> ? __pfx_autoremove_wake_function+0x10/0x10<br /> find_lock_delalloc_range+0xdb/0x260 [btrfs]<br /> writepage_delalloc+0x12f/0x500 [btrfs]<br /> ? srso_return_thunk+0x5/0x5f<br /> extent_write_cache_pages+0x232/0x840 [btrfs]<br /> btrfs_writepages+0x72/0x130 [btrfs]<br /> do_writepages+0xe7/0x260<br /> ? srso_return_thunk+0x5/0x5f<br /> ? lock_acquire+0xd2/0x300<br /> ? srso_return_thunk+0x5/0x5f<br /> ? find_held_lock+0x2b/0x80<br /> ? wbc_attach_and_unlock_inode.part.0+0x102/0x250<br /> ? wbc_attach_and_unlock_inode.part.0+0x102/0x250<br /> __writeback_single_inode+0x5c/0x4b0<br /> writeback_sb_inodes+0x22d/0x550<br /> __writeback_inodes_wb+0x4c/0xe0<br /> wb_writeback+0x2f6/0x3f0<br /> wb_workfn+0x32a/0x510<br /> process_one_work+0x1ee/0x570<br /> ? srso_return_thunk+0x5/0x5f<br /> worker_thread+0x1d1/0x3b0<br /> ? __pfx_worker_thread+0x10/0x10<br /> kthread+0x10b/0x230<br /> ? __pfx_kthread+0x10/0x10<br /> ret_from_fork+0x30/0x50<br /> ? __pfx_kthread+0x10/0x10<br /> ret_from_fork_asm+0x1a/0x30<br /> <br /> <br /> This happens because we have another success path for the zoned mode. When<br /> there is no active zone available, btrfs_reserve_extent() returns<br /> -EAGAIN. In this case, we have two reactions.<br /> <br /> (1) If the given range is never allocated, we can only wait for someone<br /> to finish a zone, so wait on BTRFS_FS_NEED_ZONE_FINISH bit and retry<br /> afterward.<br /> <br /> (2) Or, if some allocations are already done, we must bail out and let<br /> the caller to send IOs for the allocation. This is because these IOs<br /> may be necessary to finish a zone.<br /> <br /> The commit 06f364284794 ("btrfs: do proper folio cleanup when<br /> cow_file_range() failed") moved the unlock code from the inside of the<br /> loop to the outside. So, previously, the allocated extents are unlocked<br /> just after the allocation and so before returning from the function.<br /> However, they are no longer unlocked on the case (2) above. That caused<br /> the hang issue.<br /> <br /> Fix the issue by modifying the &amp;#39;end&amp;#39; to the end of the allocated<br /> range. Then, we can exit the loop and the same unlock code can properly<br /> handle the case.
Severity CVSS v4.0: Pending analysis
Last modification:
06/07/2025

CVE-2025-21932

Publication date:
01/04/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> mm: abort vma_modify() on merge out of memory failure<br /> <br /> The remainder of vma_modify() relies upon the vmg state remaining pristine<br /> after a merge attempt.<br /> <br /> Usually this is the case, however in the one edge case scenario of a merge<br /> attempt failing not due to the specified range being unmergeable, but<br /> rather due to an out of memory error arising when attempting to commit the<br /> merge, this assumption becomes untrue.<br /> <br /> This results in vmg-&gt;start, end being modified, and thus the proceeding<br /> attempts to split the VMA will be done with invalid start/end values.<br /> <br /> Thankfully, it is likely practically impossible for us to hit this in<br /> reality, as it would require a maple tree node pre-allocation failure that<br /> would likely never happen due to it being &amp;#39;too small to fail&amp;#39;, i.e. the<br /> kernel would simply keep retrying reclaim until it succeeded.<br /> <br /> However, this scenario remains theoretically possible, and what we are<br /> doing here is wrong so we must correct it.<br /> <br /> The safest option is, when this scenario occurs, to simply give up the<br /> operation. If we cannot allocate memory to merge, then we cannot allocate<br /> memory to split either (perhaps moreso!).<br /> <br /> Any scenario where this would be happening would be under very extreme<br /> (likely fatal) memory pressure, so it&amp;#39;s best we give up early.<br /> <br /> So there is no doubt it is appropriate to simply bail out in this<br /> scenario.<br /> <br /> However, in general we must if at all possible never assume VMG state is<br /> stable after a merge attempt, since merge operations update VMG fields. <br /> As a result, additionally also make this clear by storing start, end in<br /> local variables.<br /> <br /> The issue was reported originally by syzkaller, and by Brad Spengler (via<br /> an off-list discussion), and in both instances it manifested as a<br /> triggering of the assert:<br /> <br /> VM_WARN_ON_VMG(start &gt;= end, vmg);<br /> <br /> In vma_merge_existing_range().<br /> <br /> It seems at least one scenario in which this is occurring is one in which<br /> the merge being attempted is due to an madvise() across multiple VMAs<br /> which looks like this:<br /> <br /> start end<br /> ||<br /> |----------|------|<br /> | vma | next |<br /> |----------|------|<br /> <br /> When madvise_walk_vmas() is invoked, we first find vma in the above<br /> (determining prev to be equal to vma as we are offset into vma), and then<br /> enter the loop.<br /> <br /> We determine the end of vma that forms part of the range we are<br /> madvise()&amp;#39;ing by setting &amp;#39;tmp&amp;#39; to this value:<br /> <br /> /* Here vma-&gt;vm_start vm_end;<br /> <br /> We then invoke the madvise() operation via visit(), letting prev get<br /> updated to point to vma as part of the operation:<br /> <br /> /* Here vma-&gt;vm_start start, end get set to perhaps<br /> unintuitive values - we intended to shrink the middle VMA and expand the<br /> next.<br /> <br /> This means vmg-&gt;start, end are set to... vma-&gt;vm_start, start.<br /> <br /> Now the commit_merge() fails, and vmg-&gt;start, end are left like this. <br /> This means we return to the rest of vma_modify() with vmg-&gt;start, end<br /> (here denoted as start&amp;#39;, end&amp;#39;) set as:<br /> <br /> start&amp;#39; end&amp;#39;<br /> ||<br /> |----------|------|<br /> | vma | next |<br /> |----------|------|<br /> <br /> So we now erroneously try to split accordingly. This is where the<br /> unfortunate<br /> ---truncated---
Severity CVSS v4.0: Pending analysis
Last modification:
01/04/2025

CVE-2025-21935

Publication date:
01/04/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> rapidio: add check for rio_add_net() in rio_scan_alloc_net()<br /> <br /> The return value of rio_add_net() should be checked. If it fails,<br /> put_device() should be called to free the memory and give up the reference<br /> initialized in rio_add_net().
Severity CVSS v4.0: Pending analysis
Last modification:
01/04/2025

CVE-2025-21938

Publication date:
01/04/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> mptcp: fix &amp;#39;scheduling while atomic&amp;#39; in mptcp_pm_nl_append_new_local_addr<br /> <br /> If multiple connection requests attempt to create an implicit mptcp<br /> endpoint in parallel, more than one caller may end up in<br /> mptcp_pm_nl_append_new_local_addr because none found the address in<br /> local_addr_list during their call to mptcp_pm_nl_get_local_id. In this<br /> case, the concurrent new_local_addr calls may delete the address entry<br /> created by the previous caller. These deletes use synchronize_rcu, but<br /> this is not permitted in some of the contexts where this function may be<br /> called. During packet recv, the caller may be in a rcu read critical<br /> section and have preemption disabled.<br /> <br /> An example stack:<br /> <br /> BUG: scheduling while atomic: swapper/2/0/0x00000302<br /> <br /> Call Trace:<br /> <br /> dump_stack_lvl (lib/dump_stack.c:117 (discriminator 1))<br /> dump_stack (lib/dump_stack.c:124)<br /> __schedule_bug (kernel/sched/core.c:5943)<br /> schedule_debug.constprop.0 (arch/x86/include/asm/preempt.h:33 kernel/sched/core.c:5970)<br /> __schedule (arch/x86/include/asm/jump_label.h:27 include/linux/jump_label.h:207 kernel/sched/features.h:29 kernel/sched/core.c:6621)<br /> schedule (arch/x86/include/asm/preempt.h:84 kernel/sched/core.c:6804 kernel/sched/core.c:6818)<br /> schedule_timeout (kernel/time/timer.c:2160)<br /> wait_for_completion (kernel/sched/completion.c:96 kernel/sched/completion.c:116 kernel/sched/completion.c:127 kernel/sched/completion.c:148)<br /> __wait_rcu_gp (include/linux/rcupdate.h:311 kernel/rcu/update.c:444)<br /> synchronize_rcu (kernel/rcu/tree.c:3609)<br /> mptcp_pm_nl_append_new_local_addr (net/mptcp/pm_netlink.c:966 net/mptcp/pm_netlink.c:1061)<br /> mptcp_pm_nl_get_local_id (net/mptcp/pm_netlink.c:1164)<br /> mptcp_pm_get_local_id (net/mptcp/pm.c:420)<br /> subflow_check_req (net/mptcp/subflow.c:98 net/mptcp/subflow.c:213)<br /> subflow_v4_route_req (net/mptcp/subflow.c:305)<br /> tcp_conn_request (net/ipv4/tcp_input.c:7216)<br /> subflow_v4_conn_request (net/mptcp/subflow.c:651)<br /> tcp_rcv_state_process (net/ipv4/tcp_input.c:6709)<br /> tcp_v4_do_rcv (net/ipv4/tcp_ipv4.c:1934)<br /> tcp_v4_rcv (net/ipv4/tcp_ipv4.c:2334)<br /> ip_protocol_deliver_rcu (net/ipv4/ip_input.c:205 (discriminator 1))<br /> ip_local_deliver_finish (include/linux/rcupdate.h:813 net/ipv4/ip_input.c:234)<br /> ip_local_deliver (include/linux/netfilter.h:314 include/linux/netfilter.h:308 net/ipv4/ip_input.c:254)<br /> ip_sublist_rcv_finish (include/net/dst.h:461 net/ipv4/ip_input.c:580)<br /> ip_sublist_rcv (net/ipv4/ip_input.c:640)<br /> ip_list_rcv (net/ipv4/ip_input.c:675)<br /> __netif_receive_skb_list_core (net/core/dev.c:5583 net/core/dev.c:5631)<br /> netif_receive_skb_list_internal (net/core/dev.c:5685 net/core/dev.c:5774)<br /> napi_complete_done (include/linux/list.h:37 include/net/gro.h:449 include/net/gro.h:444 net/core/dev.c:6114)<br /> igb_poll (drivers/net/ethernet/intel/igb/igb_main.c:8244) igb<br /> __napi_poll (net/core/dev.c:6582)<br /> net_rx_action (net/core/dev.c:6653 net/core/dev.c:6787)<br /> handle_softirqs (kernel/softirq.c:553)<br /> __irq_exit_rcu (kernel/softirq.c:588 kernel/softirq.c:427 kernel/softirq.c:636)<br /> irq_exit_rcu (kernel/softirq.c:651)<br /> common_interrupt (arch/x86/kernel/irq.c:247 (discriminator 14))<br /> <br /> <br /> This problem seems particularly prevalent if the user advertises an<br /> endpoint that has a different external vs internal address. In the case<br /> where the external address is advertised and multiple connections<br /> already exist, multiple subflow SYNs arrive in parallel which tends to<br /> trigger the race during creation of the first local_addr_list entries<br /> which have the internal address instead.<br /> <br /> Fix by skipping the replacement of an existing implicit local address if<br /> called via mptcp_pm_nl_get_local_id.
Severity CVSS v4.0: Pending analysis
Last modification:
01/04/2025

CVE-2025-21939

Publication date:
01/04/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> drm/xe/hmm: Don&amp;#39;t dereference struct page pointers without notifier lock<br /> <br /> The pnfs that we obtain from hmm_range_fault() point to pages that<br /> we don&amp;#39;t have a reference on, and the guarantee that they are still<br /> in the cpu page-tables is that the notifier lock must be held and the<br /> notifier seqno is still valid.<br /> <br /> So while building the sg table and marking the pages accesses / dirty<br /> we need to hold this lock with a validated seqno.<br /> <br /> However, the lock is reclaim tainted which makes<br /> sg_alloc_table_from_pages_segment() unusable, since it internally<br /> allocates memory.<br /> <br /> Instead build the sg-table manually. For the non-iommu case<br /> this might lead to fewer coalesces, but if that&amp;#39;s a problem it can<br /> be fixed up later in the resource cursor code. For the iommu case,<br /> the whole sg-table may still be coalesced to a single contigous<br /> device va region.<br /> <br /> This avoids marking pages that we don&amp;#39;t own dirty and accessed, and<br /> it also avoid dereferencing struct pages that we don&amp;#39;t own.<br /> <br /> v2:<br /> - Use assert to check whether hmm pfns are valid (Matthew Auld)<br /> - Take into account that large pages may cross range boundaries<br /> (Matthew Auld)<br /> <br /> v3:<br /> - Don&amp;#39;t unnecessarily check for a non-freed sg-table. (Matthew Auld)<br /> - Add a missing up_read() in an error path. (Matthew Auld)<br /> <br /> (cherry picked from commit ea3e66d280ce2576664a862693d1da8fd324c317)
Severity CVSS v4.0: Pending analysis
Last modification:
01/04/2025