From 4bb190f61580f92b21a6198ba164366beae6ee7e Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Sat, 15 May 1999 23:13:32 +0000 Subject: 1999-05-15 Roland McGrath * default_pager.c (new_partition): Check if requested partition is already in our list, and refuse it. --- serverboot/default_pager.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'serverboot/default_pager.c') diff --git a/serverboot/default_pager.c b/serverboot/default_pager.c index 8fb8dfe1..66ff94a0 100644 --- a/serverboot/default_pager.c +++ b/serverboot/default_pager.c @@ -171,6 +171,24 @@ new_partition (const char *name, struct file_direct *fdp, vm_offset_t raddr; mach_msg_type_number_t rsize; int rc; + unsigned int id = part_id(name); + + mutex_lock(&all_partitions.lock); + { + unsigned int i; + for (i = 0; i < all_partitions.n_partitions; i++) + { + part = partition_of(i); + if (part && part->id == id) + { + printf ("(default pager): Already paging to partition %s!\n", + name); + mutex_unlock(&all_partitions.lock); + return 0; + } + } + } + mutex_unlock(&all_partitions.lock); size = atop(fdp->fd_size * fdp->fd_bsize); bmsize = howmany(size, NB_BM) * sizeof(bm_entry_t); @@ -179,7 +197,7 @@ new_partition (const char *name, struct file_direct *fdp, mutex_init(&part->p_lock); part->total_size = size; part->free = size; - part->id = part_id(name); + part->id = id; part->bitmap = (bm_entry_t *)kalloc(bmsize); part->going_away= FALSE; part->file = fdp; -- cgit v1.2.3