diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-01-10 17:55:42 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-01-10 17:55:42 -0800 |
commit | cbd0a6a2cc4327681edc61f6f47f47e276ea81d6 (patch) | |
tree | fd31d524726517b0f3f1a012bff2c4a62dd8e5a9 | |
parent | 64fce444f126b9d26574221330d9599fe998944e (diff) | |
parent | ce4bb04cae8924792ed92f4af2793b77fc986f0e (diff) | |
download | linux-cbd0a6a2cc4327681edc61f6f47f47e276ea81d6.tar.bz2 |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs regression fix from Al Viro/
Fix a leak in socket() introduced by commit 8e1611e23579 ("make
sock_alloc_file() do sock_release() on failures").
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
Fix a leak in socket(2) when we fail to allocate a file descriptor.
-rw-r--r-- | net/socket.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/socket.c b/net/socket.c index 78acd6ce74c7..6f05d5c4bf30 100644 --- a/net/socket.c +++ b/net/socket.c @@ -436,8 +436,10 @@ static int sock_map_fd(struct socket *sock, int flags) { struct file *newfile; int fd = get_unused_fd_flags(flags); - if (unlikely(fd < 0)) + if (unlikely(fd < 0)) { + sock_release(sock); return fd; + } newfile = sock_alloc_file(sock, flags, NULL); if (likely(!IS_ERR(newfile))) { |