[PATCH] uml: close TUN/TAP file descriptors
When UML opens a TUN/TAP device, the file descriptor could be copied into later, long-lived threads, holding the device open even after the interface is taken down, preventing it from being brought up again. This patch makes these descriptors close-on-exec so that they disappear from helper processes, and adds CLONE_FILES to a UML helper thread so that the descriptors are closed in the thread when they are closed elsewhere in UML. Signed-off-by: Jeff Dike <jdike@addtoit.com> Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:

committed by
Linus Torvalds

parent
fbd5577901
commit
1d2ddcfb19
@@ -122,6 +122,7 @@ static int tuntap_open_tramp(char *gate, int *fd_out, int me, int remote,
|
||||
return(-EINVAL);
|
||||
}
|
||||
*fd_out = ((int *) CMSG_DATA(cmsg))[0];
|
||||
os_set_exec_close(*fd_out, 1);
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -137,7 +138,8 @@ static int tuntap_open(void *data)
|
||||
return(err);
|
||||
|
||||
if(pri->fixed_config){
|
||||
pri->fd = os_open_file("/dev/net/tun", of_rdwr(OPENFLAGS()), 0);
|
||||
pri->fd = os_open_file("/dev/net/tun",
|
||||
of_cloexec(of_rdwr(OPENFLAGS())), 0);
|
||||
if(pri->fd < 0){
|
||||
printk("Failed to open /dev/net/tun, err = %d\n",
|
||||
-pri->fd);
|
||||
|
Reference in New Issue
Block a user