diff options
author | WANG Cong <xiyou.wangcong@gmail.com> | 2017-03-23 14:03:31 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-05-03 11:36:34 -0400 |
commit | d60d4e8c1b73608b6af3bc384e88c062485fd95e (patch) | |
tree | f47b006a7304e7323bfc9b218d02bfdd718df1ac /net | |
parent | c63d6180076bbb6c5a508910e573994ddc628e5b (diff) |
kcm: return immediately after copy_from_user() failure
[ Upstream commit a80db69e47d764bbcaf2fec54b1f308925e7c490 ]
There is no reason to continue after a copy_from_user()
failure.
Fixes: ab7ac4eb9832 ("kcm: Kernel Connection Multiplexor module")
Cc: Tom Herbert <tom@herbertland.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/kcm/kcmsock.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c index a646f3481240..fecad1098cf8 100644 --- a/net/kcm/kcmsock.c +++ b/net/kcm/kcmsock.c | |||
@@ -1685,7 +1685,7 @@ static int kcm_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) | |||
1685 | struct kcm_attach info; | 1685 | struct kcm_attach info; |
1686 | 1686 | ||
1687 | if (copy_from_user(&info, (void __user *)arg, sizeof(info))) | 1687 | if (copy_from_user(&info, (void __user *)arg, sizeof(info))) |
1688 | err = -EFAULT; | 1688 | return -EFAULT; |
1689 | 1689 | ||
1690 | err = kcm_attach_ioctl(sock, &info); | 1690 | err = kcm_attach_ioctl(sock, &info); |
1691 | 1691 | ||
@@ -1695,7 +1695,7 @@ static int kcm_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) | |||
1695 | struct kcm_unattach info; | 1695 | struct kcm_unattach info; |
1696 | 1696 | ||
1697 | if (copy_from_user(&info, (void __user *)arg, sizeof(info))) | 1697 | if (copy_from_user(&info, (void __user *)arg, sizeof(info))) |
1698 | err = -EFAULT; | 1698 | return -EFAULT; |
1699 | 1699 | ||
1700 | err = kcm_unattach_ioctl(sock, &info); | 1700 | err = kcm_unattach_ioctl(sock, &info); |
1701 | 1701 | ||
@@ -1706,7 +1706,7 @@ static int kcm_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) | |||
1706 | struct socket *newsock = NULL; | 1706 | struct socket *newsock = NULL; |
1707 | 1707 | ||
1708 | if (copy_from_user(&info, (void __user *)arg, sizeof(info))) | 1708 | if (copy_from_user(&info, (void __user *)arg, sizeof(info))) |
1709 | err = -EFAULT; | 1709 | return -EFAULT; |
1710 | 1710 | ||
1711 | err = kcm_clone(sock, &info, &newsock); | 1711 | err = kcm_clone(sock, &info, &newsock); |
1712 | 1712 | ||