summaryrefslogtreecommitdiffstats
path: root/sys/cam
diff options
context:
space:
mode:
authoravatar <avatar@FreeBSD.org>2005-06-24 08:09:05 +0000
committeravatar <avatar@FreeBSD.org>2005-06-24 08:09:05 +0000
commita05d8837d1ee569d1a355eb64484d18f2ca09322 (patch)
tree6b9ba3b01b70820e560aafb23bc2e142eee45283 /sys/cam
parent756b97ccf0d5f9d5f759d5979604efe2c242866a (diff)
downloadFreeBSD-src-a05d8837d1ee569d1a355eb64484d18f2ca09322.zip
FreeBSD-src-a05d8837d1ee569d1a355eb64484d18f2ca09322.tar.gz
Fixing a memory leak in xpt_release_device(), which can be quickly
(depends on how many memory you have) observed through "tar -tvf /dev/sa0." Without this patch, RELENG_5 and HEAD panics with something like: kmem_malloc(4096): kmem_map too small: 42258432 total allocated RELENG_4 doesn't panic but spews following errors: camq_init: - cannot malloc array! Reviewed by: gibbs, scottl Approved by: re (scottl) MFC after: 3 days
Diffstat (limited to 'sys/cam')
-rw-r--r--sys/cam/cam_xpt.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/cam/cam_xpt.c b/sys/cam/cam_xpt.c
index 2d46315..8b4a679 100644
--- a/sys/cam/cam_xpt.c
+++ b/sys/cam/cam_xpt.c
@@ -5107,6 +5107,8 @@ xpt_release_device(struct cam_eb *bus, struct cam_et *target,
devq = bus->sim->devq;
cam_devq_resize(devq, devq->alloc_queue.array_size - 1);
splx(s);
+ camq_fini(&device->drvq);
+ camq_fini(&device->ccbq.queue);
free(device, M_DEVBUF);
xpt_release_target(bus, target);
} else
OpenPOWER on IntegriCloud