diff options
author | avatar <avatar@FreeBSD.org> | 2005-06-24 08:09:05 +0000 |
---|---|---|
committer | avatar <avatar@FreeBSD.org> | 2005-06-24 08:09:05 +0000 |
commit | a05d8837d1ee569d1a355eb64484d18f2ca09322 (patch) | |
tree | 6b9ba3b01b70820e560aafb23bc2e142eee45283 /sys/cam | |
parent | 756b97ccf0d5f9d5f759d5979604efe2c242866a (diff) | |
download | FreeBSD-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.c | 2 |
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 |