The blktapctrl process is responsible for spawning individual tapdisk
processes. It does this using the 'system' method, but unfortunately none
of its file descriptors have the close-on-exec flag set. The parent blktapctl
process opens a couple of unix domain sockets per-tapdisk it spawns. So the
first tapdisk get 2 FDs leaked to it, the second gets 4 FDs leaked to it, the
3rd gets 6 and so on. The use of 'system' also unneccessarily invokes the
shell. So the attached patch replaces system with fork/execvp, and explicitly
closes all file handles upto _SC_OPEN_MAX
Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx>
Dan.
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules: http://search.cpan.org/~danberr/ -=|
|=- Projects: http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|
xen-blktap-fd-leak.patch
Description: Text document
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|