lkml.org 
[lkml]   [2003]   [Nov]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] 2.6.0-test10 O_DIRECT memory leak fix
Date
Hi Andrew,

I found the problem with O_DIRECT memory leak.

The problem is, when we are doing DIO read and crossed the end of file -
we don't release referencess on all the pages we got from get_user_pages().
(since it is a sucess case).

The fix is to call dio_cleanup() even for sucess cases. Can you please
review this ? I tested the patch with fsstress and there are no memory leak
problems now.

Thanks,
Badari
--- linux-2.6.0-test10/fs/direct-io.c 2003-11-25 12:45:14.000000000 -0800
+++ linux-2.6.0-test10.new/fs/direct-io.c 2003-11-25 15:20:26.554239616 -0800
@@ -946,6 +946,12 @@ direct_io_worker(int rw, struct kiocb *i
if (dio->bio)
dio_bio_submit(dio);

+ /*
+ * It is possible that, we return short IO due to end of file.
+ * In that case, we need to release all the pages we got hold on.
+ */
+ dio_cleanup(dio);
+
/*
* OK, all BIOs are submitted, so we can decrement bio_count to truly
* reflect the number of to-be-processed BIOs.
\
 
 \ /
  Last update: 2005-03-22 13:58    [W:0.040 / U:0.144 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site