[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20160831.210059.26103204048434366.davem@davemloft.net>
Date: Wed, 31 Aug 2016 21:00:59 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: xiyou.wangcong@...il.com
Cc: netdev@...r.kernel.org, dvyukov@...gle.com, tom@...bertland.com
Subject: Re: [Patch net] kcm: fix a socket double free
From: Cong Wang <xiyou.wangcong@...il.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 <dvyukov@...gle.com>
> Cc: Tom Herbert <tom@...bertland.com>
> Signed-off-by: Cong Wang <xiyou.wangcong@...il.com>
Applied and queued up for -stable, thanks.
Powered by blists - more mailing lists