diff options
author | Anton Kling <anton@kling.gg> | 2024-04-26 16:06:35 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-04-26 16:20:59 +0200 |
commit | 59e3f74a2e1a0806350e1ffd77a528821d1f2be3 (patch) | |
tree | a514572b0b9468f6ae3ba7cd075181c58c2371e7 /kernel/drivers/ahci.c | |
parent | 15bc439577c49e97c24a074fe6d9e9464f917054 (diff) |
Kernel: More out of memory condition checks
Diffstat (limited to 'kernel/drivers/ahci.c')
-rw-r--r-- | kernel/drivers/ahci.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/drivers/ahci.c b/kernel/drivers/ahci.c index f655709..1fad0a3 100644 --- a/kernel/drivers/ahci.c +++ b/kernel/drivers/ahci.c @@ -496,10 +496,10 @@ void add_devfs_drive_file(u8 port) { inode->inode_num = port; } -void ahci_init(void) { +int ahci_init(void) { struct PCI_DEVICE device; if (!pci_devices_by_id(0x01, 0x06, &device)) { - return; + return 0; } kprintf("vendor: %x\n", device.vendor); kprintf("device: %x\n", device.device); @@ -509,6 +509,9 @@ void ahci_init(void) { pci_get_bar(&device, 5, &bar); u8 *HBA_base = mmu_map_frames((void *)bar.address, bar.size); + if (!HBA_base) { + return 0; + } hba = (volatile struct HBA_MEM *)(HBA_base); for (u8 i = 0; i < 32; i++) { if (!((hba->pi >> i) & 1)) { @@ -535,4 +538,5 @@ void ahci_init(void) { break; } } + return 1; } |