Messages in this thread | | | From | Jheng-Jhong Wu <> | Date | Thu, 2 Aug 2018 16:31:40 +0800 | Subject | Re: [PATCH v2] staging: mt29f_spinand: fix memory leak while programming pages |
| |
Dear greg k-h,
Before device is removed and freed memory automatically, programming pages may run many many times. Assume we erase and rewrite a large part of the flash, then spinand_program_page() might exhaust memory if memory is not large enough. We may not remove and re-add the device between each programming page, right? In fact, OOM indeed occurred when I tested programming multi-pages by mtd_debug tool. Erased first, then programmed pages.
Best Regards, ───────────────────────── Jheng-Jhong Wu (Victor Wu) E-mail: goodwater.wu@gmail.com ───────────────────────── Greg Kroah-Hartman <gregkh@linuxfoundation.org> 於 2018年8月2日 週四 下午4:03寫道: > > On Thu, Aug 02, 2018 at 03:51:30PM +0800, Jheng-Jhong Wu wrote: > > In spinand_program_page(), it uses devm_kzalloc() to allocate memory to > > wbuf dynamically if internal ECC is on, but it doesn't free memory > > allocated to wbuf at the end of this function. Before the spinand device > > is removed and frees memory automatically, programming pages may run many > > times. This leads to a memory leak issue when internal ECC is on. > > How is this a memory leak? The memory will be freed when the struct > device is removed from the system. How did you test that there was a > leak? > > > Changelog: > > > > v2: > > - use kzalloc()/kfree() to replace devm_kzalloc()/devm_kfree() > > - add some descriptions to commit message > > this changelog goes below the --- line. > > thanks, > > greg k-h
| |