![]() |
Home ▼ Bookkeeping
Online ▼ Security
Audits ▼
Managed
DNS ▼
About
Order
FAQ
Acceptable Use Policy
Dynamic DNS Clients
Configure Domains Dyanmic DNS Update Password Network
Monitor ▼
Enterprise Package
Advanced Package
Standard Package
Free Trial
FAQ
Price/Feature Summary
Order/Renew
Examples
Configure/Status Alert Profiles | ||
CVE ID: | CVE-2024-26792 |
Description: | In the Linux kernel, the following vulnerability has been resolved:
btrfs: fix double free of anonymous device after snapshot creation
failure When creating a snapshot we may do a double free of an
anonymous device in case there's an error committing the transaction.
The second free may result in freeing an anonymous device number that
was allocated by some other subsystem in the kernel or another btrfs
filesystem. The steps that lead to this: 1) At
ioctl.c:create_snapshot() we allocate an anonymous device number and
assign it to pending_snapshot->anon_dev; 2) Then we call
btrfs_commit_transaction() and end up at
transaction.c:create_pending_snapshot(); 3) There we call
btrfs_get_new_fs_root() and pass it the anonymous device number stored
in pending_snapshot->anon_dev; 4) btrfs_get_new_fs_root() frees that
anonymous device number because btrfs_lookup_fs_root() returned a root
- someone else did a lookup of the new root already, which could some
task doing backref walking; 5) After that some error happens in the
transaction commit path, and at ioctl.c:create_snapshot() we jump to
the 'fail' label, and after that we free again the same anonymous
device number, which in the meanwhile may have been reallocated
somewhere else, because pending_snapshot->anon_dev still has the same
value as in step 1. Recently syzbot ran into this and reported the
following trace: ------------[ cut here ]------------ ida_free called
for id=51 which is not allocated. WARNING: CPU: 1 PID: 31038 at
lib/idr.c:525 ida_free+0x370/0x420 lib/idr.c:525 Modules linked in:
CPU: 1 PID: 31038 Comm: syz-executor.2 Not tainted
6.8.0-rc4-syzkaller-00410-gc02197fc9076 #0 Hardware name: Google
Google Compute Engine/Google Compute Engine, BIOS Google 01/25/2024
RIP: 0010:ida_free+0x370/0x420 lib/idr.c:525 Code: 10 42 80 3c 28
(...) RSP: 0018:ffffc90015a67300 EFLAGS: 00010246 RAX:
be5130472f5dd000 RBX: 0000000000000033 RCX: 0000000000040000 RDX:
ffffc90009a7a000 RSI: 000000000003ffff RDI: 0000000000040000 RBP:
ffffc90015a673f0 R08: ffffffff81577992 R09: 1ffff92002b4cdb4 R10:
dffffc0000000000 R11: fffff52002b4cdb5 R12: 0000000000000246 R13:
dffffc0000000000 R14: ffffffff8e256b80 R15: 0000000000000246 FS:
00007fca3f4b46c0(0000) GS:ffff8880b9500000(0000)
knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033 CR2: 00007f167a17b978 CR3: 000000001ed26000 CR4:
0000000000350ef0 Call Trace: |
Test IDs: | None available |
Cross References: |
Common Vulnerability Exposure (CVE) ID: CVE-2024-26792 https://git.kernel.org/stable/c/c34adc20b91a8e55e048b18d63f4f4ae003ecf8f https://git.kernel.org/stable/c/c34adc20b91a8e55e048b18d63f4f4ae003ecf8f https://git.kernel.org/stable/c/c8ab7521665bd0f8bc4a900244d1d5a7095cc3b9 https://git.kernel.org/stable/c/c8ab7521665bd0f8bc4a900244d1d5a7095cc3b9 https://git.kernel.org/stable/c/e2b54eaf28df0c978626c9736b94f003b523b451 https://git.kernel.org/stable/c/e2b54eaf28df0c978626c9736b94f003b523b451 https://git.kernel.org/stable/c/eb3441093aad251418921246fc3b224fd1575701 https://git.kernel.org/stable/c/eb3441093aad251418921246fc3b224fd1575701 |