summaryrefslogtreecommitdiffstats
path: root/net/socket.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-01-10 17:55:42 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2018-01-10 17:55:42 -0800
commitcbd0a6a2cc4327681edc61f6f47f47e276ea81d6 (patch)
treefd31d524726517b0f3f1a012bff2c4a62dd8e5a9 /net/socket.c
parent64fce444f126b9d26574221330d9599fe998944e (diff)
parentce4bb04cae8924792ed92f4af2793b77fc986f0e (diff)
downloadlinux-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.
Diffstat (limited to 'net/socket.c')
-rw-r--r--net/socket.c4
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))) {