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-2022-50002

Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> net/mlx5: LAG, fix logic over MLX5_LAG_FLAG_NDEVS_READY<br /> <br /> Only set MLX5_LAG_FLAG_NDEVS_READY if both netdevices are registered.<br /> Doing so guarantees that both ldev-&gt;pf[MLX5_LAG_P0].dev and<br /> ldev-&gt;pf[MLX5_LAG_P1].dev have valid pointers when<br /> MLX5_LAG_FLAG_NDEVS_READY is set.<br /> <br /> The core issue is asymmetry in setting MLX5_LAG_FLAG_NDEVS_READY and<br /> clearing it. Setting it is done wrongly when both<br /> ldev-&gt;pf[MLX5_LAG_P0].dev and ldev-&gt;pf[MLX5_LAG_P1].dev are set;<br /> clearing it is done right when either of ldev-&gt;pf[i].netdev is cleared.<br /> <br /> Consider the following scenario:<br /> 1. PF0 loads and sets ldev-&gt;pf[MLX5_LAG_P0].dev to a valid pointer<br /> 2. PF1 loads and sets both ldev-&gt;pf[MLX5_LAG_P1].dev and<br /> ldev-&gt;pf[MLX5_LAG_P1].netdev with valid pointers. This results in<br /> MLX5_LAG_FLAG_NDEVS_READY is set.<br /> 3. PF0 is unloaded before setting dev-&gt;pf[MLX5_LAG_P0].netdev.<br /> MLX5_LAG_FLAG_NDEVS_READY remains set.<br /> <br /> Further execution of mlx5_do_bond() will result in null pointer<br /> dereference when calling mlx5_lag_is_multipath()<br /> <br /> This patch fixes the following call trace actually encountered:<br /> <br /> [ 1293.475195] BUG: kernel NULL pointer dereference, address: 00000000000009a8<br /> [ 1293.478756] #PF: supervisor read access in kernel mode<br /> [ 1293.481320] #PF: error_code(0x0000) - not-present page<br /> [ 1293.483686] PGD 0 P4D 0<br /> [ 1293.484434] Oops: 0000 [#1] SMP PTI<br /> [ 1293.485377] CPU: 1 PID: 23690 Comm: kworker/u16:2 Not tainted 5.18.0-rc5_for_upstream_min_debug_2022_05_05_10_13 #1<br /> [ 1293.488039] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014<br /> [ 1293.490836] Workqueue: mlx5_lag mlx5_do_bond_work [mlx5_core]<br /> [ 1293.492448] RIP: 0010:mlx5_lag_is_multipath+0x5/0x50 [mlx5_core]<br /> [ 1293.494044] Code: e8 70 40 ff e0 48 8b 14 24 48 83 05 5c 1a 1b 00 01 e9 19 ff ff ff 48 83 05 47 1a 1b 00 01 eb d7 0f 1f 44 00 00 0f 1f 44 00 00 8b 87 a8 09 00 00 48 85 c0 74 26 48 83 05 a7 1b 1b 00 01 41 b8<br /> [ 1293.498673] RSP: 0018:ffff88811b2fbe40 EFLAGS: 00010202<br /> [ 1293.500152] RAX: ffff88818a94e1c0 RBX: ffff888165eca6c0 RCX: 0000000000000000<br /> [ 1293.501841] RDX: 0000000000000001 RSI: ffff88818a94e1c0 RDI: 0000000000000000<br /> [ 1293.503585] RBP: 0000000000000000 R08: ffff888119886740 R09: ffff888165eca73c<br /> [ 1293.505286] R10: 0000000000000018 R11: 0000000000000018 R12: ffff88818a94e1c0<br /> [ 1293.506979] R13: ffff888112729800 R14: 0000000000000000 R15: ffff888112729858<br /> [ 1293.508753] FS: 0000000000000000(0000) GS:ffff88852cc40000(0000) knlGS:0000000000000000<br /> [ 1293.510782] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br /> [ 1293.512265] CR2: 00000000000009a8 CR3: 00000001032d4002 CR4: 0000000000370ea0<br /> [ 1293.514001] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000<br /> [ 1293.515806] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Severity CVSS v4.0: Pending analysis
Last modification:
14/11/2025

CVE-2022-50005

Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> nfc: pn533: Fix use-after-free bugs caused by pn532_cmd_timeout<br /> <br /> When the pn532 uart device is detaching, the pn532_uart_remove()<br /> is called. But there are no functions in pn532_uart_remove() that<br /> could delete the cmd_timeout timer, which will cause use-after-free<br /> bugs. The process is shown below:<br /> <br /> (thread 1) | (thread 2)<br /> | pn532_uart_send_frame<br /> pn532_uart_remove | mod_timer(&amp;pn532-&gt;cmd_timeout,...)<br /> ... | (wait a time)<br /> kfree(pn532) //FREE | pn532_cmd_timeout<br /> | pn532_uart_send_frame<br /> | pn532-&gt;... //USE<br /> <br /> This patch adds del_timer_sync() in pn532_uart_remove() in order to<br /> prevent the use-after-free bugs. What&amp;#39;s more, the pn53x_unregister_nfc()<br /> is well synchronized, it sets nfc_dev-&gt;shutting_down to true and there<br /> are no syscalls could restart the cmd_timeout timer.
Severity CVSS v4.0: Pending analysis
Last modification:
14/11/2025

CVE-2022-50006

Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> NFSv4.2 fix problems with __nfs42_ssc_open<br /> <br /> A destination server while doing a COPY shouldn&amp;#39;t accept using the<br /> passed in filehandle if its not a regular filehandle.<br /> <br /> If alloc_file_pseudo() has failed, we need to decrement a reference<br /> on the newly created inode, otherwise it leaks.
Severity CVSS v4.0: Pending analysis
Last modification:
14/11/2025

CVE-2022-50007

Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> xfrm: fix refcount leak in __xfrm_policy_check()<br /> <br /> The issue happens on an error path in __xfrm_policy_check(). When the<br /> fetching process of the object `pols[1]` fails, the function simply<br /> returns 0, forgetting to decrement the reference count of `pols[0]`,<br /> which is incremented earlier by either xfrm_sk_policy_lookup() or<br /> xfrm_policy_lookup(). This may result in memory leaks.<br /> <br /> Fix it by decreasing the reference count of `pols[0]` in that path.
Severity CVSS v4.0: Pending analysis
Last modification:
14/11/2025

CVE-2022-50008

Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> kprobes: don&amp;#39;t call disarm_kprobe() for disabled kprobes<br /> <br /> The assumption in __disable_kprobe() is wrong, and it could try to disarm<br /> an already disarmed kprobe and fire the WARN_ONCE() below. [0] We can<br /> easily reproduce this issue.<br /> <br /> 1. Write 0 to /sys/kernel/debug/kprobes/enabled.<br /> <br /> # echo 0 &gt; /sys/kernel/debug/kprobes/enabled<br /> <br /> 2. Run execsnoop. At this time, one kprobe is disabled.<br /> <br /> # /usr/share/bcc/tools/execsnoop &amp;<br /> [1] 2460<br /> PCOMM PID PPID RET ARGS<br /> <br /> # cat /sys/kernel/debug/kprobes/list<br /> ffffffff91345650 r __x64_sys_execve+0x0 [FTRACE]<br /> ffffffff91345650 k __x64_sys_execve+0x0 [DISABLED][FTRACE]<br /> <br /> 3. Write 1 to /sys/kernel/debug/kprobes/enabled, which changes<br /> kprobes_all_disarmed to false but does not arm the disabled kprobe.<br /> <br /> # echo 1 &gt; /sys/kernel/debug/kprobes/enabled<br /> <br /> # cat /sys/kernel/debug/kprobes/list<br /> ffffffff91345650 r __x64_sys_execve+0x0 [FTRACE]<br /> ffffffff91345650 k __x64_sys_execve+0x0 [DISABLED][FTRACE]<br /> <br /> 4. Kill execsnoop, when __disable_kprobe() calls disarm_kprobe() for the<br /> disabled kprobe and hits the WARN_ONCE() in __disarm_kprobe_ftrace().<br /> <br /> # fg<br /> /usr/share/bcc/tools/execsnoop<br /> ^C<br /> <br /> Actually, WARN_ONCE() is fired twice, and __unregister_kprobe_top() misses<br /> some cleanups and leaves the aggregated kprobe in the hash table. Then,<br /> __unregister_trace_kprobe() initialises tk-&gt;rp.kp.list and creates an<br /> infinite loop like this.<br /> <br /> aggregated kprobe.list -&gt; kprobe.list -.<br /> ^ |<br /> &amp;#39;.__.&amp;#39;<br /> <br /> In this situation, these commands fall into the infinite loop and result<br /> in RCU stall or soft lockup.<br /> <br /> cat /sys/kernel/debug/kprobes/list : show_kprobe_addr() enters into the<br /> infinite loop with RCU.<br /> <br /> /usr/share/bcc/tools/execsnoop : warn_kprobe_rereg() holds kprobe_mutex,<br /> and __get_valid_kprobe() is stuck in<br /> the loop.<br /> <br /> To avoid the issue, make sure we don&amp;#39;t call disarm_kprobe() for disabled<br /> kprobes.<br /> <br /> [0]<br /> Failed to disarm kprobe-ftrace at __x64_sys_execve+0x0/0x40 (error -2)<br /> WARNING: CPU: 6 PID: 2460 at kernel/kprobes.c:1130 __disarm_kprobe_ftrace.isra.19 (kernel/kprobes.c:1129)<br /> Modules linked in: ena<br /> CPU: 6 PID: 2460 Comm: execsnoop Not tainted 5.19.0+ #28<br /> Hardware name: Amazon EC2 c5.2xlarge/, BIOS 1.0 10/16/2017<br /> RIP: 0010:__disarm_kprobe_ftrace.isra.19 (kernel/kprobes.c:1129)<br /> Code: 24 8b 02 eb c1 80 3d c4 83 f2 01 00 75 d4 48 8b 75 00 89 c2 48 c7 c7 90 fa 0f 92 89 04 24 c6 05 ab 83 01 e8 e4 94 f0 ff 0b 8b 04 24 eb b1 89 c6 48 c7 c7 60 fa 0f 92 89 04 24 e8 cc 94<br /> RSP: 0018:ffff9e6ec154bd98 EFLAGS: 00010282<br /> RAX: 0000000000000000 RBX: ffffffff930f7b00 RCX: 0000000000000001<br /> RDX: 0000000080000001 RSI: ffffffff921461c5 RDI: 00000000ffffffff<br /> RBP: ffff89c504286da8 R08: 0000000000000000 R09: c0000000fffeffff<br /> R10: 0000000000000000 R11: ffff9e6ec154bc28 R12: ffff89c502394e40<br /> R13: ffff89c502394c00 R14: ffff9e6ec154bc00 R15: 0000000000000000<br /> FS: 00007fe800398740(0000) GS:ffff89c812d80000(0000) knlGS:0000000000000000<br /> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br /> CR2: 000000c00057f010 CR3: 0000000103b54006 CR4: 00000000007706e0<br /> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000<br /> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400<br /> PKRU: 55555554<br /> Call Trace:<br /> <br /> __disable_kprobe (kernel/kprobes.c:1716)<br /> disable_kprobe (kernel/kprobes.c:2392)<br /> __disable_trace_kprobe (kernel/trace/trace_kprobe.c:340)<br /> disable_trace_kprobe (kernel/trace/trace_kprobe.c:429)<br /> perf_trace_event_unreg.isra.2 (./include/linux/tracepoint.h:93 kernel/trace/trace_event_perf.c:168)<br /> perf_kprobe_destroy (kernel/trace/trace_event_perf.c:295)<br /> _free_event (kernel/events/core.c:4971)<br /> perf_event_release_kernel (kernel/events/core.c:5176)<br /> perf_release (kernel/events/core.c:5186)<br /> __fput (fs/file_table.c:321)<br /> task_work_run (./include/linux/<br /> ---truncated---
Severity CVSS v4.0: Pending analysis
Last modification:
14/11/2025

CVE-2022-50009

Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> f2fs: fix null-ptr-deref in f2fs_get_dnode_of_data<br /> <br /> There is issue as follows when test f2fs atomic write:<br /> F2FS-fs (loop0): Can&amp;#39;t find valid F2FS filesystem in 2th superblock<br /> F2FS-fs (loop0): invalid crc_offset: 0<br /> F2FS-fs (loop0): f2fs_check_nid_range: out-of-range nid=1, run fsck to fix.<br /> F2FS-fs (loop0): f2fs_check_nid_range: out-of-range nid=2, run fsck to fix.<br /> ==================================================================<br /> BUG: KASAN: null-ptr-deref in f2fs_get_dnode_of_data+0xac/0x16d0<br /> Read of size 8 at addr 0000000000000028 by task rep/1990<br /> <br /> CPU: 4 PID: 1990 Comm: rep Not tainted 5.19.0-rc6-next-20220715 #266<br /> Call Trace:<br /> <br /> dump_stack_lvl+0x6e/0x91<br /> print_report.cold+0x49a/0x6bb<br /> kasan_report+0xa8/0x130<br /> f2fs_get_dnode_of_data+0xac/0x16d0<br /> f2fs_do_write_data_page+0x2a5/0x1030<br /> move_data_page+0x3c5/0xdf0<br /> do_garbage_collect+0x2015/0x36c0<br /> f2fs_gc+0x554/0x1d30<br /> f2fs_balance_fs+0x7f5/0xda0<br /> f2fs_write_single_data_page+0xb66/0xdc0<br /> f2fs_write_cache_pages+0x716/0x1420<br /> f2fs_write_data_pages+0x84f/0x9a0<br /> do_writepages+0x130/0x3a0<br /> filemap_fdatawrite_wbc+0x87/0xa0<br /> file_write_and_wait_range+0x157/0x1c0<br /> f2fs_do_sync_file+0x206/0x12d0<br /> f2fs_sync_file+0x99/0xc0<br /> vfs_fsync_range+0x75/0x140<br /> f2fs_file_write_iter+0xd7b/0x1850<br /> vfs_write+0x645/0x780<br /> ksys_write+0xf1/0x1e0<br /> do_syscall_64+0x3b/0x90<br /> entry_SYSCALL_64_after_hwframe+0x63/0xcd<br /> <br /> As 3db1de0e582c commit changed atomic write way which new a cow_inode for<br /> atomic write file, and also mark cow_inode as FI_ATOMIC_FILE.<br /> When f2fs_do_write_data_page write cow_inode will use cow_inode&amp;#39;s cow_inode<br /> which is NULL. Then will trigger null-ptr-deref.<br /> To solve above issue, introduce FI_COW_FILE flag for COW inode.<br /> <br /> Fiexes: 3db1de0e582c("f2fs: change the current atomic write way")
Severity CVSS v4.0: Pending analysis
Last modification:
14/11/2025

CVE-2022-50010

Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> video: fbdev: i740fb: Check the argument of i740_calc_vclk()<br /> <br /> Since the user can control the arguments of the ioctl() from the user<br /> space, under special arguments that may result in a divide-by-zero bug.<br /> <br /> If the user provides an improper &amp;#39;pixclock&amp;#39; value that makes the argumet<br /> of i740_calc_vclk() less than &amp;#39;I740_RFREQ_FIX&amp;#39;, it will cause a<br /> divide-by-zero bug in:<br /> drivers/video/fbdev/i740fb.c:353 p_best = min(15, ilog2(I740_MAX_VCO_FREQ / (freq / I740_RFREQ_FIX)));<br /> <br /> The following log can reveal it:<br /> <br /> divide error: 0000 [#1] PREEMPT SMP KASAN PTI<br /> RIP: 0010:i740_calc_vclk drivers/video/fbdev/i740fb.c:353 [inline]<br /> RIP: 0010:i740fb_decode_var drivers/video/fbdev/i740fb.c:646 [inline]<br /> RIP: 0010:i740fb_set_par+0x163f/0x3b70 drivers/video/fbdev/i740fb.c:742<br /> Call Trace:<br /> fb_set_var+0x604/0xeb0 drivers/video/fbdev/core/fbmem.c:1034<br /> do_fb_ioctl+0x234/0x670 drivers/video/fbdev/core/fbmem.c:1110<br /> fb_ioctl+0xdd/0x130 drivers/video/fbdev/core/fbmem.c:1189<br /> <br /> Fix this by checking the argument of i740_calc_vclk() first.
Severity CVSS v4.0: Pending analysis
Last modification:
14/11/2025

CVE-2022-50001

Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> netfilter: nft_tproxy: restrict to prerouting hook<br /> <br /> TPROXY is only allowed from prerouting, but nft_tproxy doesn&amp;#39;t check this.<br /> This fixes a crash (null dereference) when using tproxy from e.g. output.
Severity CVSS v4.0: Pending analysis
Last modification:
14/11/2025

CVE-2022-50000

Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> netfilter: flowtable: fix stuck flows on cleanup due to pending work<br /> <br /> To clear the flow table on flow table free, the following sequence<br /> normally happens in order:<br /> <br /> 1) gc_step work is stopped to disable any further stats/del requests.<br /> 2) All flow table entries are set to teardown state.<br /> 3) Run gc_step which will queue HW del work for each flow table entry.<br /> 4) Waiting for the above del work to finish (flush).<br /> 5) Run gc_step again, deleting all entries from the flow table.<br /> 6) Flow table is freed.<br /> <br /> But if a flow table entry already has pending HW stats or HW add work<br /> step 3 will not queue HW del work (it will be skipped), step 4 will wait<br /> for the pending add/stats to finish, and step 5 will queue HW del work<br /> which might execute after freeing of the flow table.<br /> <br /> To fix the above, this patch flushes the pending work, then it sets the<br /> teardown flag to all flows in the flowtable and it forces a garbage<br /> collector run to queue work to remove the flows from hardware, then it<br /> flushes this new pending work and (finally) it forces another garbage<br /> collector run to remove the entry from the software flowtable.<br /> <br /> Stack trace:<br /> [47773.882335] BUG: KASAN: use-after-free in down_read+0x99/0x460<br /> [47773.883634] Write of size 8 at addr ffff888103b45aa8 by task kworker/u20:6/543704<br /> [47773.885634] CPU: 3 PID: 543704 Comm: kworker/u20:6 Not tainted 5.12.0-rc7+ #2<br /> [47773.886745] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009)<br /> [47773.888438] Workqueue: nf_ft_offload_del flow_offload_work_handler [nf_flow_table]<br /> [47773.889727] Call Trace:<br /> [47773.890214] dump_stack+0xbb/0x107<br /> [47773.890818] print_address_description.constprop.0+0x18/0x140<br /> [47773.892990] kasan_report.cold+0x7c/0xd8<br /> [47773.894459] kasan_check_range+0x145/0x1a0<br /> [47773.895174] down_read+0x99/0x460<br /> [47773.899706] nf_flow_offload_tuple+0x24f/0x3c0 [nf_flow_table]<br /> [47773.907137] flow_offload_work_handler+0x72d/0xbe0 [nf_flow_table]<br /> [47773.913372] process_one_work+0x8ac/0x14e0<br /> [47773.921325]<br /> [47773.921325] Allocated by task 592159:<br /> [47773.922031] kasan_save_stack+0x1b/0x40<br /> [47773.922730] __kasan_kmalloc+0x7a/0x90<br /> [47773.923411] tcf_ct_flow_table_get+0x3cb/0x1230 [act_ct]<br /> [47773.924363] tcf_ct_init+0x71c/0x1156 [act_ct]<br /> [47773.925207] tcf_action_init_1+0x45b/0x700<br /> [47773.925987] tcf_action_init+0x453/0x6b0<br /> [47773.926692] tcf_exts_validate+0x3d0/0x600<br /> [47773.927419] fl_change+0x757/0x4a51 [cls_flower]<br /> [47773.928227] tc_new_tfilter+0x89a/0x2070<br /> [47773.936652]<br /> [47773.936652] Freed by task 543704:<br /> [47773.937303] kasan_save_stack+0x1b/0x40<br /> [47773.938039] kasan_set_track+0x1c/0x30<br /> [47773.938731] kasan_set_free_info+0x20/0x30<br /> [47773.939467] __kasan_slab_free+0xe7/0x120<br /> [47773.940194] slab_free_freelist_hook+0x86/0x190<br /> [47773.941038] kfree+0xce/0x3a0<br /> [47773.941644] tcf_ct_flow_table_cleanup_work<br /> <br /> Original patch description and stack trace by Paul Blakey.
Severity CVSS v4.0: Pending analysis
Last modification:
14/11/2025

CVE-2022-49999

Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> btrfs: fix space cache corruption and potential double allocations<br /> <br /> When testing space_cache v2 on a large set of machines, we encountered a<br /> few symptoms:<br /> <br /> 1. "unable to add free space :-17" (EEXIST) errors.<br /> 2. Missing free space info items, sometimes caught with a "missing free<br /> space info for X" error.<br /> 3. Double-accounted space: ranges that were allocated in the extent tree<br /> and also marked as free in the free space tree, ranges that were<br /> marked as allocated twice in the extent tree, or ranges that were<br /> marked as free twice in the free space tree. If the latter made it<br /> onto disk, the next reboot would hit the BUG_ON() in<br /> add_new_free_space().<br /> 4. On some hosts with no on-disk corruption or error messages, the<br /> in-memory space cache (dumped with drgn) disagreed with the free<br /> space tree.<br /> <br /> All of these symptoms have the same underlying cause: a race between<br /> caching the free space for a block group and returning free space to the<br /> in-memory space cache for pinned extents causes us to double-add a free<br /> range to the space cache. This race exists when free space is cached<br /> from the free space tree (space_cache=v2) or the extent tree<br /> (nospace_cache, or space_cache=v1 if the cache needs to be regenerated).<br /> struct btrfs_block_group::last_byte_to_unpin and struct<br /> btrfs_block_group::progress are supposed to protect against this race,<br /> but commit d0c2f4fa555e ("btrfs: make concurrent fsyncs wait less when<br /> waiting for a transaction commit") subtly broke this by allowing<br /> multiple transactions to be unpinning extents at the same time.<br /> <br /> Specifically, the race is as follows:<br /> <br /> 1. An extent is deleted from an uncached block group in transaction A.<br /> 2. btrfs_commit_transaction() is called for transaction A.<br /> 3. btrfs_run_delayed_refs() -&gt; __btrfs_free_extent() runs the delayed<br /> ref for the deleted extent.<br /> 4. __btrfs_free_extent() -&gt; do_free_extent_accounting() -&gt;<br /> add_to_free_space_tree() adds the deleted extent back to the free<br /> space tree.<br /> 5. do_free_extent_accounting() -&gt; btrfs_update_block_group() -&gt;<br /> btrfs_cache_block_group() queues up the block group to get cached.<br /> block_group-&gt;progress is set to block_group-&gt;start.<br /> 6. btrfs_commit_transaction() for transaction A calls<br /> switch_commit_roots(). It sets block_group-&gt;last_byte_to_unpin to<br /> block_group-&gt;progress, which is block_group-&gt;start because the block<br /> group hasn&amp;#39;t been cached yet.<br /> 7. The caching thread gets to our block group. Since the commit roots<br /> were already switched, load_free_space_tree() sees the deleted extent<br /> as free and adds it to the space cache. It finishes caching and sets<br /> block_group-&gt;progress to U64_MAX.<br /> 8. btrfs_commit_transaction() advances transaction A to<br /> TRANS_STATE_SUPER_COMMITTED.<br /> 9. fsync calls btrfs_commit_transaction() for transaction B. Since<br /> transaction A is already in TRANS_STATE_SUPER_COMMITTED and the<br /> commit is for fsync, it advances.<br /> 10. btrfs_commit_transaction() for transaction B calls<br /> switch_commit_roots(). This time, the block group has already been<br /> cached, so it sets block_group-&gt;last_byte_to_unpin to U64_MAX.<br /> 11. btrfs_commit_transaction() for transaction A calls<br /> btrfs_finish_extent_commit(), which calls unpin_extent_range() for<br /> the deleted extent. It sees last_byte_to_unpin set to U64_MAX (by<br /> transaction B!), so it adds the deleted extent to the space cache<br /> again!<br /> <br /> This explains all of our symptoms above:<br /> <br /> * If the sequence of events is exactly as described above, when the free<br /> space is re-added in step 11, it will fail with EEXIST.<br /> * If another thread reallocates the deleted extent in between steps 7<br /> and 11, then step 11 will silently re-add that space to the space<br /> cache as free even though it is actually allocated. Then, if that<br /> space is allocated *again*, the free space tree will be corrupted<br /> (namely, the wrong item will be deleted).<br /> * If we don&amp;#39;t catch this free space tree corr<br /> ---truncated---
Severity CVSS v4.0: Pending analysis
Last modification:
14/11/2025

CVE-2022-49998

Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> rxrpc: Fix locking in rxrpc&amp;#39;s sendmsg<br /> <br /> Fix three bugs in the rxrpc&amp;#39;s sendmsg implementation:<br /> <br /> (1) rxrpc_new_client_call() should release the socket lock when returning<br /> an error from rxrpc_get_call_slot().<br /> <br /> (2) rxrpc_wait_for_tx_window_intr() will return without the call mutex<br /> held in the event that we&amp;#39;re interrupted by a signal whilst waiting<br /> for tx space on the socket or relocking the call mutex afterwards.<br /> <br /> Fix this by: (a) moving the unlock/lock of the call mutex up to<br /> rxrpc_send_data() such that the lock is not held around all of<br /> rxrpc_wait_for_tx_window*() and (b) indicating to higher callers<br /> whether we&amp;#39;re return with the lock dropped. Note that this means<br /> recvmsg() will not block on this call whilst we&amp;#39;re waiting.<br /> <br /> (3) After dropping and regaining the call mutex, rxrpc_send_data() needs<br /> to go and recheck the state of the tx_pending buffer and the<br /> tx_total_len check in case we raced with another sendmsg() on the same<br /> call.<br /> <br /> Thinking on this some more, it might make sense to have different locks for<br /> sendmsg() and recvmsg(). There&amp;#39;s probably no need to make recvmsg() wait<br /> for sendmsg(). It does mean that recvmsg() can return MSG_EOR indicating<br /> that a call is dead before a sendmsg() to that call returns - but that can<br /> currently happen anyway.<br /> <br /> Without fix (2), something like the following can be induced:<br /> <br /> WARNING: bad unlock balance detected!<br /> 5.16.0-rc6-syzkaller #0 Not tainted<br /> -------------------------------------<br /> syz-executor011/3597 is trying to release lock (&amp;call-&gt;user_mutex) at:<br /> [] rxrpc_do_sendmsg+0xc13/0x1350 net/rxrpc/sendmsg.c:748<br /> but there are no more locks to release!<br /> <br /> other info that might help us debug this:<br /> no locks held by syz-executor011/3597.<br /> ...<br /> Call Trace:<br /> <br /> __dump_stack lib/dump_stack.c:88 [inline]<br /> dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106<br /> print_unlock_imbalance_bug include/trace/events/lock.h:58 [inline]<br /> __lock_release kernel/locking/lockdep.c:5306 [inline]<br /> lock_release.cold+0x49/0x4e kernel/locking/lockdep.c:5657<br /> __mutex_unlock_slowpath+0x99/0x5e0 kernel/locking/mutex.c:900<br /> rxrpc_do_sendmsg+0xc13/0x1350 net/rxrpc/sendmsg.c:748<br /> rxrpc_sendmsg+0x420/0x630 net/rxrpc/af_rxrpc.c:561<br /> sock_sendmsg_nosec net/socket.c:704 [inline]<br /> sock_sendmsg+0xcf/0x120 net/socket.c:724<br /> ____sys_sendmsg+0x6e8/0x810 net/socket.c:2409<br /> ___sys_sendmsg+0xf3/0x170 net/socket.c:2463<br /> __sys_sendmsg+0xe5/0x1b0 net/socket.c:2492<br /> do_syscall_x64 arch/x86/entry/common.c:50 [inline]<br /> do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80<br /> entry_SYSCALL_64_after_hwframe+0x44/0xae<br /> <br /> [Thanks to Hawkins Jiawei and Khalid Masum for their attempts to fix this]
Severity CVSS v4.0: Pending analysis
Last modification:
14/11/2025

CVE-2022-49997

Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> net: lantiq_xrx200: restore buffer if memory allocation failed<br /> <br /> In a situation where memory allocation fails, an invalid buffer address<br /> is stored. When this descriptor is used again, the system panics in the<br /> build_skb() function when accessing memory.
Severity CVSS v4.0: Pending analysis
Last modification:
14/11/2025