From 971ab3b919a797248dd031c5f750b59eb6ce4578 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Tue, 25 Jan 2022 20:29:02 +0200 Subject: [PATCH] Kernel: Use u64 instead of size_t in the STORAGE_DEVICE_GET_SIZE ioctl This ensures the device size doesn't get truncated on i686. --- Kernel/Storage/StorageDevice.cpp | 4 ++-- Userland/Utilities/blockdev.cpp | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Kernel/Storage/StorageDevice.cpp b/Kernel/Storage/StorageDevice.cpp index c277498136..ac1475abf3 100644 --- a/Kernel/Storage/StorageDevice.cpp +++ b/Kernel/Storage/StorageDevice.cpp @@ -189,8 +189,8 @@ ErrorOr StorageDevice::ioctl(OpenFileDescription&, unsigned request, Users { switch (request) { case STORAGE_DEVICE_GET_SIZE: { - size_t disk_size = m_max_addressable_block * block_size(); - return copy_to_user(static_ptr_cast(arg), &disk_size); + u64 disk_size = m_max_addressable_block * block_size(); + return copy_to_user(static_ptr_cast(arg), &disk_size); break; } case STORAGE_DEVICE_GET_BLOCK_SIZE: { diff --git a/Userland/Utilities/blockdev.cpp b/Userland/Utilities/blockdev.cpp index f911347ac4..14e87250ed 100644 --- a/Userland/Utilities/blockdev.cpp +++ b/Userland/Utilities/blockdev.cpp @@ -10,11 +10,10 @@ #include #include #include -#include static void fetch_ioctl(int fd, int request) { - size_t value; + u64 value; if (ioctl(fd, request, &value) < 0) { perror("ioctl"); exit(1);