From: Cong Wang <xiyou.wangc...@gmail.com> Date: Sun, 28 Aug 2016 21:28:26 -0700
> Dmitry reported a double free on kcm socket, which could > be easily reproduced by: > > #include <unistd.h> > #include <sys/syscall.h> > > int main() > { > int fd = syscall(SYS_socket, 0x29ul, 0x5ul, 0x0ul, 0, 0, 0); > syscall(SYS_ioctl, fd, 0x89e2ul, 0x20a98000ul, 0, 0, 0); > return 0; > } > > This is because on the error path, after we install > the new socket file, we call sock_release() to clean > up the socket, which leaves the fd pointing to a freed > socket. Fix this by calling sys_close() on that fd > directly. > > Fixes: ab7ac4eb9832 ("kcm: Kernel Connection Multiplexor module") > Reported-by: Dmitry Vyukov <dvyu...@google.com> > Cc: Tom Herbert <t...@herbertland.com> > Signed-off-by: Cong Wang <xiyou.wangc...@gmail.com> Applied and queued up for -stable, thanks.