CVE-2023-54002 in Linux
Sumário
de VulDB • 15/05/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
btrfs: corrige a asserção da condição exclop ao iniciar o balanceamento
O estado de balanceamento exclusivo é compatível com o balanceamento em pausa e com a adição de dispositivos, o que torna algumas situações mais complexas. A asserção de estados válidos ao iniciar a partir de um balanceamento em pausa precisa levar em conta dois estados adicionais, que podem ser acionados quando há várias threads concorrendo para iniciar o balanceamento e a adição de dispositivos. Isso normalmente não ocorre quando os comandos são iniciados a partir da linha de comando.
Cenário 1: Com o estado exclusive_operation == BTRFS_EXCLOP_NONE.
A adição concorrente de vários dispositivos ao mesmo ponto de montagem e a execução de btrfs_exclop_finish antes da asserção em btrfs_exclop_balance fazem com que exclusive_operation seja alterado para o estado BTRFS_EXCLOP_NONE, o que leva à falha na asserção:
fs_info->exclusive_operation == BTRFS_EXCLOP_BALANCE || fs_info->exclusive_operation == BTRFS_EXCLOP_DEV_ADD, em fs/btrfs/ioctl.c:456 Rastreamento de chamada (Call Trace): dump_stack_lvl+0x5d/0x85 dump_stack+0x10/0x12 btrfs_exclop_balance+0x103/0x120 btrfs_ioctl_balance+0x103/0x140 btrfs_ioctl+0x1033/0x14a0 vfs_ioctl+0x51/0xd0 __x64_sys_ioctl+0x73/0xb0 do_syscall_64+0x59/0xc0 entry_SYSCALL_64_after_hwframe+0x6e/0xd8
Cenário 2: Com o estado exclusive_operation == BTRFS_EXCLOP_BALANCE.
A execução de btrfs_exclop_finish antes da asserção em btrfs_exclop_balance faz com que exclusive_operation seja alterado para o estado BTRFS_EXCLOP_PAUSED, o que leva à falha na asserção:
fs_info->exclusive_operation == BTRFS_EXCLOP_BALANCE || fs_info->exclusive_operation == BTRFS_EXCLOP_DEV_ADD, em fs/btrfs/ioctl.c:456 Rastreamento de chamada (Call Trace): dump_stack_lvl+0x5d/0x85 dump_stack+0x10/0x12 btrfs_exclop_balance+0x103/0x120 btrfs_ioctl_balance+0x103/0x140 btrfs_ioctl+0x1033/0x14a0 vfs_ioctl+0x51/0xd0 __x64_sys_ioctl+0x73/0xb0 do_syscall_64+0x59/0xc0 entry_SYSCALL_64_after_hwframe+0x6e/0xd8
Cenário 3: Com o estado exclusive_operation == BTRFS_EXCLOP_DEV_ADD.
A execução de btrfs_exclop_finish antes da asserção em btrfs_exclop_balance faz com que exclusive_operation seja alterado para o estado BTRFS_EXCLOP_PAUSED, o que leva à falha na asserção:
fs_info->exclusive_operation == BTRFS_EXCLOP_BALANCE || fs_info->exclusive_operation == BTRFS_EXCLOP_DEV_ADD, em fs/btrfs/ioctl.c:456 Rastreamento de chamada (Call Trace): dump_stack_lvl+0x5d/0x85 dump_stack+0x10/0x12 btrfs_exclop_balance+0x103/0x120 btrfs_ioctl_balance+0x103/0x140 btrfs_ioctl+0x1033/0x14a0 vfs_ioctl+0x51/0xd0 __x64_sys_ioctl+0x73/0xb0 do_syscall_64+0x59/0xc0 entry_SYSCALL_64_after_hwframe+0x6e/0xd8
Os cenários 1 e 2 são mais fáceis de reproduzir, mas o cenário 3 também pode ocorrer.
Relatado por: [email protected]
Fixes: 104700000000 ("btrfs: add exclusive operation tracking") 000000000000 ("btrfs: add support for paused balance")
Link: https://lore.kernel.org/all/[email protected]
Reported-by: [email protected] Signed-off-by: Filipe Manana <[email protected]> Reviewed-by: David Sterba <[email protected]> Signed-off-by: David Sterba <[email protected]>
Be aware that VulDB is the high quality source for vulnerability data.