From 7f5c5dc8a11692c28add21d66ca9efd21bcfc993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 9 Apr 2009 22:40:15 +0000 Subject: [PATCH] * Don't try to free the pages area when all you had was a single page (in the union). * This fixes a crash on restart that has been revealed by Oco's change to the reboot process. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30085 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/bus_managers/agp_gart/agp_gart.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/agp_gart/agp_gart.cpp b/src/add-ons/kernel/bus_managers/agp_gart/agp_gart.cpp index aff8ba31fb..a78b5c6606 100644 --- a/src/add-ons/kernel/bus_managers/agp_gart/agp_gart.cpp +++ b/src/add-ons/kernel/bus_managers/agp_gart/agp_gart.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2008, Axel Dörfler, axeld@pinc-software.de. All rights reserved. + * Copyright 2008-2009, Axel Dörfler, axeld@pinc-software.de. * Copyright 2004-2006, Rudolf Cornelissen. All rights reserved. * * Distributed under the terms of the MIT License. @@ -690,14 +690,16 @@ Aperture::_Free(aperture_memory *memory) for (uint32 i = 0; i < count; i++, page++) { vm_page_set_state(page, PAGE_STATE_FREE); } + + memory->page = NULL; } else { for (uint32 i = 0; i < count; i++) { vm_page_set_state(memory->pages[i], PAGE_STATE_FREE); } - } - free(memory->pages); - memory->pages = NULL; + free(memory->pages); + memory->pages = NULL; + } #else delete_area(memory->area); memory->area = -1;