aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r--net/tipc/socket.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 252a52ae0893..c4992002fd68 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -2973,7 +2973,8 @@ static int tipc_getsockopt(struct socket *sock, int lvl, int opt,
2973 2973
2974static int tipc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) 2974static int tipc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
2975{ 2975{
2976 struct sock *sk = sock->sk; 2976 struct net *net = sock_net(sock->sk);
2977 struct tipc_sioc_nodeid_req nr = {0};
2977 struct tipc_sioc_ln_req lnr; 2978 struct tipc_sioc_ln_req lnr;
2978 void __user *argp = (void __user *)arg; 2979 void __user *argp = (void __user *)arg;
2979 2980
@@ -2981,7 +2982,7 @@ static int tipc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
2981 case SIOCGETLINKNAME: 2982 case SIOCGETLINKNAME:
2982 if (copy_from_user(&lnr, argp, sizeof(lnr))) 2983 if (copy_from_user(&lnr, argp, sizeof(lnr)))
2983 return -EFAULT; 2984 return -EFAULT;
2984 if (!tipc_node_get_linkname(sock_net(sk), 2985 if (!tipc_node_get_linkname(net,
2985 lnr.bearer_id & 0xffff, lnr.peer, 2986 lnr.bearer_id & 0xffff, lnr.peer,
2986 lnr.linkname, TIPC_MAX_LINK_NAME)) { 2987 lnr.linkname, TIPC_MAX_LINK_NAME)) {
2987 if (copy_to_user(argp, &lnr, sizeof(lnr))) 2988 if (copy_to_user(argp, &lnr, sizeof(lnr)))
@@ -2989,6 +2990,14 @@ static int tipc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
2989 return 0; 2990 return 0;
2990 } 2991 }
2991 return -EADDRNOTAVAIL; 2992 return -EADDRNOTAVAIL;
2993 case SIOCGETNODEID:
2994 if (copy_from_user(&nr, argp, sizeof(nr)))
2995 return -EFAULT;
2996 if (!tipc_node_get_id(net, nr.peer, nr.node_id))
2997 return -EADDRNOTAVAIL;
2998 if (copy_to_user(argp, &nr, sizeof(nr)))
2999 return -EFAULT;
3000 return 0;
2992 default: 3001 default:
2993 return -ENOIOCTLCMD; 3002 return -ENOIOCTLCMD;
2994 } 3003 }