diff options
author | marcel <marcel@FreeBSD.org> | 2009-02-20 04:10:31 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2009-02-20 04:10:31 +0000 |
commit | 06849d431c7d471f1488eb982edef98712a3f262 (patch) | |
tree | 49a75cc7b4d8b694a7e11f3a4dcf5e16286d00e2 /sys/geom/part | |
parent | aff17f39c1b316f8858f5fe7f803430b126dc475 (diff) | |
download | FreeBSD-src-06849d431c7d471f1488eb982edef98712a3f262.zip FreeBSD-src-06849d431c7d471f1488eb982edef98712a3f262.tar.gz |
Fix an infinite loop created when the last logical partition is
removed.
Diffstat (limited to 'sys/geom/part')
-rw-r--r-- | sys/geom/part/g_part_ebr.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/geom/part/g_part_ebr.c b/sys/geom/part/g_part_ebr.c index 0e65e6a..44580b2 100644 --- a/sys/geom/part/g_part_ebr.c +++ b/sys/geom/part/g_part_ebr.c @@ -561,9 +561,9 @@ g_part_ebr_write(struct g_part_table *basetable, struct g_consumer *cp) le32enc(p + 8, entry->ent.dp_start); le32enc(p + 12, entry->ent.dp_size); - do { - next = LIST_NEXT(baseentry, gpe_entry); - } while (next != NULL && next->gpe_deleted); + next = LIST_NEXT(baseentry, gpe_entry); + while (next != NULL && next->gpe_deleted) + next = LIST_NEXT(next, gpe_entry); p += DOSPARTSIZE; if (next != NULL) |