From b596af363c30de5323641fab69ad50c712f526e2 Mon Sep 17 00:00:00 2001 From: Liav A Date: Fri, 27 Aug 2021 11:09:04 +0300 Subject: [PATCH] Kernel/VirtIO: Make RNG device to not be a CharacterDevice This class as a CharacterDevice really was not useful, because you couldn't even read from it. Also, the random number generator interface should be the /dev/random, so any other interface to get random numbers is generally not a good idea. Instead, let's keep this functionality as an entropy source for random numbers generation, but without exposing a device node. --- Kernel/Bus/VirtIO/VirtIORNG.cpp | 3 +-- Kernel/Bus/VirtIO/VirtIORNG.h | 15 ++++----------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/Kernel/Bus/VirtIO/VirtIORNG.cpp b/Kernel/Bus/VirtIO/VirtIORNG.cpp index 560ab0a075..94fb060ec3 100644 --- a/Kernel/Bus/VirtIO/VirtIORNG.cpp +++ b/Kernel/Bus/VirtIO/VirtIORNG.cpp @@ -10,8 +10,7 @@ namespace Kernel { UNMAP_AFTER_INIT VirtIORNG::VirtIORNG(PCI::Address address) - : CharacterDevice(10, 183) - , VirtIODevice(address, "VirtIORNG") + : VirtIODevice(address, "VirtIORNG") { bool success = negotiate_features([&](auto) { return 0; diff --git a/Kernel/Bus/VirtIO/VirtIORNG.h b/Kernel/Bus/VirtIO/VirtIORNG.h index 12a2223a68..b43a4267a3 100644 --- a/Kernel/Bus/VirtIO/VirtIORNG.h +++ b/Kernel/Bus/VirtIO/VirtIORNG.h @@ -6,6 +6,7 @@ #pragma once +#include #include #include #include @@ -14,19 +15,11 @@ namespace Kernel { #define REQUESTQ 0 -class VirtIORNG final : public CharacterDevice +class VirtIORNG final + : public RefCounted , public VirtIODevice { public: - virtual StringView purpose() const override { return class_name(); } - virtual StringView class_name() const override { return m_class_name; } - - virtual bool can_read(const FileDescription&, size_t) const override { return false; } - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override { return 0; } - virtual bool can_write(const FileDescription&, size_t) const override { return false; } - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return 0; } - - virtual mode_t required_mode() const override { return 0666; } - virtual String device_name() const override { return "hwrng"; } + virtual StringView purpose() const override { return m_class_name; } VirtIORNG(PCI::Address); virtual ~VirtIORNG() override;