summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Bizon <mbizon@freebox.fr>2009-07-16 06:32:52 +0000
committerGreg Kroah-Hartman <gregkh@suse.de>2009-08-16 14:19:19 -0700
commitff77456ae8fcd2d3140de34019fb75b8c345f185 (patch)
tree1b70352d5a5a6ec8aadac9ee6c85319f735ca81b
parentdf383787f26f8a16e65c7648750c717aee425da2 (diff)
ide: fix memory leak when flush command is issued
commit bc146d23d1358af43f03793c3ad8c9f16bbcffcb upstream. I'm using ide on 2.6.30.1 with xfs filesystem. I noticed a kernel memory leak after writing lots of data, the kmalloc-96 slab cache keeps growing. It seems the struct ide_cmd kmalloced by idedisk_prepare_flush is never kfreed. Commit a09485df9cda49fbde2766c86eb18a9cae585162 ("ide: move request type specific code from ide_end_drive_cmd() to callers (v3)") and f505d49ffd25ed062e76ffd17568d3937fcd338c ("ide: fix barriers support") cause this regression, cmd->rq must now be set for ide_complete_cmd to honor the IDE_TFLAG_DYN flag. Signed-off-by: Maxime Bizon <mbizon@freebox.fr> Acked-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> Cc: Simon Kirby <sim@netnation.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/ide/ide-disk.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
index a9fbe2c31210..08f0fe0e7ae5 100644
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -413,6 +413,7 @@ static void idedisk_prepare_flush(struct request_queue *q, struct request *rq)
rq->cmd_type = REQ_TYPE_ATA_TASKFILE;
rq->cmd_flags |= REQ_SOFTBARRIER;
rq->special = cmd;
+ cmd->rq = rq;
}
ide_devset_get(multcount, mult_count);