Kernel: Don't crash if unable to map ramdisk inside kernel address space
This commit is contained in:
parent
436ca2491d
commit
346e0f4dac
Notes:
sideshowbarker
2024-07-18 20:43:25 +09:00
Author: https://github.com/boricj Commit: https://github.com/SerenityOS/serenity/commit/346e0f4dacf Pull-request: https://github.com/SerenityOS/serenity/pull/6156
3 changed files with 9 additions and 6 deletions
|
@ -70,7 +70,10 @@ RamdiskController::RamdiskController()
|
|||
if (used_memory_range.type == UsedMemoryRangeType::BootModule) {
|
||||
size_t length = page_round_up(used_memory_range.end.get()) - used_memory_range.start.get();
|
||||
auto region = MemoryManager::the().allocate_kernel_region(used_memory_range.start, length, "Ramdisk", Region::Access::Read | Region::Access::Write);
|
||||
m_devices.append(RamdiskDevice::create(*this, move(region), 6, count));
|
||||
if (!region)
|
||||
dmesgln("RamdiskController: Failed to allocate kernel region of size {}", length);
|
||||
else
|
||||
m_devices.append(RamdiskDevice::create(*this, region.release_nonnull(), 6, count));
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,12 +32,12 @@
|
|||
|
||||
namespace Kernel {
|
||||
|
||||
NonnullRefPtr<RamdiskDevice> RamdiskDevice::create(const RamdiskController& controller, OwnPtr<Region>&& region, int major, int minor)
|
||||
NonnullRefPtr<RamdiskDevice> RamdiskDevice::create(const RamdiskController& controller, NonnullOwnPtr<Region>&& region, int major, int minor)
|
||||
{
|
||||
return adopt(*new RamdiskDevice(controller, move(region), major, minor));
|
||||
}
|
||||
|
||||
RamdiskDevice::RamdiskDevice(const RamdiskController& controller, OwnPtr<Region>&& region, int major, int minor)
|
||||
RamdiskDevice::RamdiskDevice(const RamdiskController& controller, NonnullOwnPtr<Region>&& region, int major, int minor)
|
||||
: StorageDevice(controller, major, minor, 512, region->size() / 512)
|
||||
, m_region(move(region))
|
||||
{
|
||||
|
|
|
@ -37,8 +37,8 @@ class RamdiskDevice final : public StorageDevice {
|
|||
friend class RamdiskController;
|
||||
AK_MAKE_ETERNAL
|
||||
public:
|
||||
static NonnullRefPtr<RamdiskDevice> create(const RamdiskController&, OwnPtr<Region>&& region, int major, int minor);
|
||||
RamdiskDevice(const RamdiskController&, OwnPtr<Region>&&, int major, int minor);
|
||||
static NonnullRefPtr<RamdiskDevice> create(const RamdiskController&, NonnullOwnPtr<Region>&& region, int major, int minor);
|
||||
RamdiskDevice(const RamdiskController&, NonnullOwnPtr<Region>&&, int major, int minor);
|
||||
virtual ~RamdiskDevice() override;
|
||||
|
||||
// ^StorageDevice
|
||||
|
@ -55,7 +55,7 @@ public:
|
|||
|
||||
Lock m_lock { "RamdiskDevice" };
|
||||
|
||||
OwnPtr<Region> m_region;
|
||||
NonnullOwnPtr<Region> m_region;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue