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 3bb45042e833..14a5d055717d 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -2970,7 +2970,8 @@ static int tipc_getsockopt(struct socket *sock, int lvl, int opt,
2970 2970
2971static int tipc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) 2971static int tipc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
2972{ 2972{
2973 struct sock *sk = sock->sk; 2973 struct net *net = sock_net(sock->sk);
2974 struct tipc_sioc_nodeid_req nr = {0};
2974 struct tipc_sioc_ln_req lnr; 2975 struct tipc_sioc_ln_req lnr;
2975 void __user *argp = (void __user *)arg; 2976 void __user *argp = (void __user *)arg;
2976 2977
@@ -2978,7 +2979,7 @@ static int tipc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
2978 case SIOCGETLINKNAME: 2979 case SIOCGETLINKNAME:
2979 if (copy_from_user(&lnr, argp, sizeof(lnr))) 2980 if (copy_from_user(&lnr, argp, sizeof(lnr)))
2980 return -EFAULT; 2981 return -EFAULT;
2981 if (!tipc_node_get_linkname(sock_net(sk), 2982 if (!tipc_node_get_linkname(net,
2982 lnr.bearer_id & 0xffff, lnr.peer, 2983 lnr.bearer_id & 0xffff, lnr.peer,
2983 lnr.linkname, TIPC_MAX_LINK_NAME)) { 2984 lnr.linkname, TIPC_MAX_LINK_NAME)) {
2984 if (copy_to_user(argp, &lnr, sizeof(lnr))) 2985 if (copy_to_user(argp, &lnr, sizeof(lnr)))
@@ -2986,6 +2987,14 @@ static int tipc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
2986 return 0; 2987 return 0;
2987 } 2988 }
2988 return -EADDRNOTAVAIL; 2989 return -EADDRNOTAVAIL;
2990 case SIOCGETNODEID:
2991 if (copy_from_user(&nr, argp, sizeof(nr)))
2992 return -EFAULT;
2993 if (!tipc_node_get_id(net, nr.peer, nr.node_id))
2994 return -EADDRNOTAVAIL;
2995 if (copy_to_user(argp, &nr, sizeof(nr)))
2996 return -EFAULT;
2997 return 0;
2989 default: 2998 default:
2990 return -ENOIOCTLCMD; 2999 return -ENOIOCTLCMD;
2991 } 3000 }