All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] fdset's leakage
@ 2006-07-10 13:40 Kirill Korotaev
  2006-07-11  8:01 ` Andrew Morton
  0 siblings, 1 reply; 8+ messages in thread
From: Kirill Korotaev @ 2006-07-10 13:40 UTC (permalink / raw)
  To: Andrew Morton, Linux Kernel Mailing List, devel, Alexey Kuznetsov

[-- Attachment #1: Type: text/plain, Size: 453 bytes --]

Andrew,

Another patch from Alexey Kuznetsov fixing memory leak in alloc_fdtable().

[PATCH] fdset's leakage

When found, it is obvious. nfds calculated when allocating fdsets
is rewritten by calculation of size of fdtable, and when we are
unlucky, we try to free fdsets of wrong size.

Found due to OpenVZ resource management (User Beancounters).

Signed-Off-By: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
Signed-Off-By: Kirill Korotaev <dev@openvz.org>


[-- Attachment #2: diff-fdset-leakage --]
[-- Type: text/plain, Size: 523 bytes --]

diff -urp linux-2.6-orig/fs/file.c linux-2.6/fs/file.c
--- linux-2.6-orig/fs/file.c	2006-07-10 12:10:51.000000000 +0400
+++ linux-2.6/fs/file.c	2006-07-10 14:47:01.000000000 +0400
@@ -277,11 +277,13 @@ static struct fdtable *alloc_fdtable(int
 	} while (nfds <= nr);
 	new_fds = alloc_fd_array(nfds);
 	if (!new_fds)
-		goto out;
+		goto out2;
 	fdt->fd = new_fds;
 	fdt->max_fds = nfds;
 	fdt->free_files = NULL;
 	return fdt;
+out2:
+	nfds = fdt->max_fdset;
 out:
   	if (new_openset)
   		free_fdset(new_openset, nfds);

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2006-07-12 10:50 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-10 13:40 [PATCH] fdset's leakage Kirill Korotaev
2006-07-11  8:01 ` Andrew Morton
2006-07-11  9:02   ` Rene Scharfe
2006-07-11  9:05   ` Kirill Korotaev
2006-07-11  9:28     ` Andrew Morton
2006-07-11 16:13     ` Vadim Lobanov
2006-07-11 17:26       ` Eric Dumazet
2006-07-12 10:49       ` Kirill Korotaev

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.