From daichi@ongs.co.jp  Mon Sep  6 13:33:21 2004
Return-Path: <daichi@ongs.co.jp>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id F1C1216A4CE
	for <FreeBSD-gnats-submit@freebsd.org>; Mon,  6 Sep 2004 13:33:20 +0000 (GMT)
Received: from ongs.co.jp (ns.ongs.co.jp [202.216.232.58])
	by mx1.FreeBSD.org (Postfix) with SMTP id 02A2243D58
	for <FreeBSD-gnats-submit@freebsd.org>; Mon,  6 Sep 2004 13:33:20 +0000 (GMT)
	(envelope-from daichi@ongs.co.jp)
Received: (qmail 55486 invoked from network); 6 Sep 2004 13:28:45 -0000
Received: from unknown (HELO parancell.ongs.co.jp) (202.216.232.62)
  by ns.ongs.co.jp with SMTP; 6 Sep 2004 13:28:45 -0000
Received: from parancell.ongs.co.jp (localhost.ongs.co.jp [127.0.0.1])
	by parancell.ongs.co.jp (8.12.10/8.12.10) with ESMTP id i86DY9bi081054;
	Mon, 6 Sep 2004 22:34:09 +0900 (JST)
	(envelope-from daichi@parancell.ongs.co.jp)
Received: (from daichi@localhost)
	by parancell.ongs.co.jp (8.12.10/8.12.10/Submit) id i86DY8E6081053;
	Mon, 6 Sep 2004 22:34:08 +0900 (JST)
	(envelope-from daichi)
Message-Id: <200409061334.i86DY8E6081053@parancell.ongs.co.jp>
Date: Mon, 6 Sep 2004 22:34:08 +0900 (JST)
From: Daichi GOTO <daichi@freebsd.org>
Reply-To: Daichi GOTO <daichi@freebsd.org>
To: FreeBSD-gnats-submit@freebsd.org
Cc: fjoe@freebsd.org
Subject: [kernel panic] [patch] geom_uzip.ko causes panic when loaded
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         71432
>Category:       kern
>Synopsis:       [kernel panic] [patch] geom_uzip.ko causes panic when loaded
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Sep 06 13:40:24 GMT 2004
>Closed-Date:    Mon Sep 06 13:51:08 GMT 2004
>Last-Modified:  Mon Sep 06 13:51:08 GMT 2004
>Originator:     Daichi GOTO
>Release:        FreeBSD 5.2.1-RELEASE-p9 i386
>Organization:
>Environment:
FreeBSD freebsd.ongs.co.jp 5.3-BETA3 FreeBSD 5.3-BETA3 #2: Sun Sep  5 01:45:47 JST 2004     root@freebsd.ongs.co.jp:/usr/obj/usr/src/sys/MITHOS  i386

>Description:
/boot/kernel/geom_uzip.ko causes panic when loaded

>How-To-Repeat:
# kldload geom_uzip

or 

# geom uzip load

>Fix:
I think that follow patch will fix.

--- sys/geom/uzip/g_uzip.c.orig	Mon Aug 30 16:08:17 2004
+++ sys/geom/uzip/g_uzip.c	Mon Aug 30 17:02:27 2004
@@ -91,10 +91,10 @@
 		    gp->name, sc->req_total, sc->req_cached);
 	}
 	if (sc->offsets != NULL)
-		free(sc->offsets, M_GEOM_UZIP);
+		g_free(sc->offsets);
 	mtx_destroy(&sc->last_mtx);
-	free(sc->last_buf, M_GEOM_UZIP);
-	free(sc, M_GEOM_UZIP);
+	g_free(sc->last_buf);
+	g_free(sc);
 }
 
 static void *
@@ -102,14 +102,14 @@
 {
 	void *ptr;
 
-	ptr = malloc(type * size, M_GEOM_UZIP, M_NOWAIT);
+	ptr = g_malloc(type * size, M_NOWAIT | M_ZERO);
 	return ptr;
 }
 
 static void
 z_free(void *nil, void *ptr)
 {
-	free(ptr, M_GEOM_UZIP);
+	g_free(ptr);
 }
 
 static void
@@ -207,7 +207,7 @@
 	 */
 	DPRINTF(("%s: done: (%d, %lld, %ld)\n",
 	    gp->name, bp2->bio_error, bp2->bio_completed, bp2->bio_resid));
-	free(bp->bio_data, M_GEOM_UZIP);
+	g_free(bp->bio_data);
 	g_destroy_bio(bp);
 	g_io_deliver(bp2, bp2->bio_error);
 }
@@ -285,7 +285,7 @@
 	    bp->bio_offset, bp->bio_length,
 	    sc->offsets[start_blk], sc->offsets[end_blk] - sc->offsets[start_blk],
 	    bp2->bio_offset, bp2->bio_length));
-	bp2->bio_data = malloc(bp2->bio_length, M_GEOM_UZIP, M_NOWAIT);
+	bp2->bio_data = g_malloc(bp2->bio_length, M_NOWAIT | M_ZERO);
 	if (bp2->bio_data == NULL) {
 		g_io_deliver(bp, ENOMEM);
 		return;
@@ -393,7 +393,7 @@
 	/*
 	 * Initialize softc and read offsets.
 	 */
-	sc = malloc(sizeof(*sc), M_GEOM_UZIP, M_WAITOK);
+	sc = g_malloc(sizeof(*sc), M_WAITOK | M_ZERO);
 	gp->softc = sc;
 	sc->blksz = ntohl(header->blksz);
 	sc->nblocks = ntohl(header->nblocks);
@@ -413,8 +413,8 @@
 		       gp->name, sc->nblocks);
 		goto err;
 	}
-	sc->offsets = malloc(
-	    total_offsets * sizeof(uint64_t), M_GEOM_UZIP, M_WAITOK);
+	sc->offsets = g_malloc(
+	    total_offsets * sizeof(uint64_t), M_WAITOK | M_ZERO);
 	offsets_read = MIN(total_offsets,
 	    (pp->sectorsize - sizeof(*header)) / sizeof(uint64_t));
 	for (i = 0; i < offsets_read; i++)
@@ -424,7 +424,7 @@
 	for (blk = 1; offsets_read < total_offsets; blk++) {
 		uint32_t nread;
 
-		free(buf, M_GEOM_UZIP);
+		g_free(buf);
 		buf = g_read_data(
 		    cp, blk * pp->sectorsize, pp->sectorsize, &error);
 		if (buf == NULL || error != 0)
@@ -442,7 +442,7 @@
 	DPRINTF(("%s: done reading offsets\n", gp->name));
 	mtx_init(&sc->last_mtx, "geom_uzip cache", NULL, MTX_DEF);
 	sc->last_blk = -1;
-	sc->last_buf = malloc(sc->blksz, M_GEOM_UZIP, M_WAITOK);
+	sc->last_buf = g_malloc(sc->blksz, M_WAITOK | M_ZERO);
 	sc->req_total = 0;
 	sc->req_cached = 0;
 
@@ -470,7 +470,7 @@
 	g_topology_lock();
 	g_access(cp, -1, 0, 0);
 	if (buf != NULL)
-		free(buf, M_GEOM_UZIP);
+		g_free(buf);
 	if (gp->softc != NULL) {
 		g_uzip_softc_free(gp->softc, NULL);
 		gp->softc = NULL;

>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: daichi 
State-Changed-When: Mon Sep 6 13:50:45 GMT 2004 
State-Changed-Why:  
Duplicate of kern/71431 

http://www.freebsd.org/cgi/query-pr.cgi?pr=71432 
>Unformatted:
