Messages in this thread | | | Date | Tue, 17 Oct 2006 10:10:20 +0200 | From | Jarek Poplawski <> | Subject | Re: potential mem leak when system is low on memory |
| |
On 17-10-2006 00:52, Amit Choudhary wrote: > Hi All, > > I was just scrubbing the kernel for checking the return ststus of > kmalloc(), and I saw at many places the following things. I just > wanted to report this. > > 1. If there are more than one kmalloc() calls in the same function, > and if kmalloc() returns NULL for one of them, then the memory > obtained from previous kmalloc() calls is not released. > > Something like: > > func() > { > var1 = kmalloc(size); > if (!var1) > return -ENOMEM; > > var2 = kmalloc(size); > if (!var2) > return -ENOMEM; > > /* mem leak as var1 is not freed */ > > } > > 2. Sometimes, memory is allocated in a loop. So, if kmalloc() fails at > some point, memory allocated previously is not released. > > func() > { > for (i = 0; i < LENGTH; i++) { > var1[i] = kmalloc(size); > if (!var1[i]) > return -ENOMEM; > > /* mem leak as var1[0] to var1[i - 1] is not freed */ > > } > } > > So, already the system is running low on memory and on top of it there > are leaks.
So you've found elementary programming bugs and it would be nice to point this places.
Jarek P. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |