From 864f842dfe6c7a0dfbb01b1c62338f5be12b86e8 Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Sun, 9 Jan 2022 15:55:35 +0100 Subject: [PATCH] Kernel: Page-align AC'97 audio buffer descriptor list This was broken in commit 0a1b34c753 / PR #11687 since the buffer descriptor list size was not page-aligned, and the new `MM.allocate_dma_buffer_pages` expects a page-aligned size. --- Kernel/Devices/Audio/AC97.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Kernel/Devices/Audio/AC97.cpp b/Kernel/Devices/Audio/AC97.cpp index 6951e198074..b19ab3b00bd 100644 --- a/Kernel/Devices/Audio/AC97.cpp +++ b/Kernel/Devices/Audio/AC97.cpp @@ -200,7 +200,8 @@ ErrorOr AC97::write(OpenFileDescription&, u64, UserOrKernelBuffer const& m_output_buffer = TRY(MM.allocate_dma_buffer_pages(m_output_buffer_page_count * PAGE_SIZE, "AC97 Output buffer"sv, Memory::Region::Access::Write)); } if (!m_buffer_descriptor_list) { - constexpr size_t buffer_descriptor_list_size = buffer_descriptor_list_max_entries * sizeof(BufferDescriptorListEntry); + size_t buffer_descriptor_list_size = buffer_descriptor_list_max_entries * sizeof(BufferDescriptorListEntry); + buffer_descriptor_list_size = TRY(Memory::page_round_up(buffer_descriptor_list_size)); m_buffer_descriptor_list = TRY(MM.allocate_dma_buffer_pages(buffer_descriptor_list_size, "AC97 Buffer Descriptor List"sv, Memory::Region::Access::Write)); }