summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1998-11-19 06:20:42 +0000
committerbde <bde@FreeBSD.org>1998-11-19 06:20:42 +0000
commit9094f7c05e564ba1faf25d35a89ac210d2daff2b (patch)
tree4d5732bee160daa2203e7bcdabd675d52ecea0e5
parentbd073938e95cc12ae08984609dab55ed0f3964e9 (diff)
downloadFreeBSD-src-9094f7c05e564ba1faf25d35a89ac210d2daff2b.zip
FreeBSD-src-9094f7c05e564ba1faf25d35a89ac210d2daff2b.tar.gz
Fixed a null pointer panic in spc_free(). swap_pager_putpages()
almost always causes this panic for the curproc != pageproc case. This case apparently doesn't happen in normal operation, but it happens when vm_page_alloc_contig() is called when there is a memory hogging application that hasn't already been paged out. PR: 8632 Reviewed by: info@opensound.com (Dev Mazumdar), dg Broken in: rev.1.89 (1998/02/23)
-rw-r--r--sys/vm/swap_pager.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
index bd470dc..62733c9 100644
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -39,7 +39,7 @@
* from: Utah $Hdr: swap_pager.c 1.4 91/04/30$
*
* @(#)swap_pager.c 8.9 (Berkeley) 3/21/94
- * $Id: swap_pager.c,v 1.102 1998/10/13 08:24:42 dg Exp $
+ * $Id: swap_pager.c,v 1.103 1998/10/31 15:31:28 peter Exp $
*/
/*
@@ -1535,12 +1535,14 @@ swap_pager_putpages(object, m, count, sync, rtvals)
}
}
- if (bp->b_rcred != NOCRED)
- crfree(bp->b_rcred);
- if (bp->b_wcred != NOCRED)
- crfree(bp->b_wcred);
-
- spc_free(spc);
+ if (spc != NULL) {
+ if (bp->b_rcred != NOCRED)
+ crfree(bp->b_rcred);
+ if (bp->b_wcred != NOCRED)
+ crfree(bp->b_wcred);
+ spc_free(spc);
+ } else
+ relpbuf(bp);
if (swap_pager_free_pending)
swap_pager_sync();
OpenPOWER on IntegriCloud