summaryrefslogtreecommitdiff
path: root/net/socket.c
diff options
context:
space:
mode:
authorchunx <chunx@nvidia.com>2013-07-05 11:42:05 +0800
committerDan Willemsen <dwillemsen@nvidia.com>2013-09-14 13:40:37 -0700
commitdb969bbf31dbb79c0f06497f083b4bad16ad88c7 (patch)
tree79b3f7b9091cbb454e70b1b0e28585175daa904c /net/socket.c
parentd8461f401990820027131da3ec597361d8906cb8 (diff)
net: show cmdline in /proc/net/{tcp udp tcp6 udp6}
Get process's cmdline from a sock's corresponding inode pointer, so that cmdline can't be used by Android active-standby app to find the corresponding package name. Bug 1185001 Change-Id: Idc8651e4bb85b8a152dfade9689a719f7d72687d Signed-off-by: Chun Xu <chunx@nvidia.com> Reviewed-on: http://git-master/r/253458 (cherry picked from commit 5dcfe4f561bd8d1767e0938dfd7565b2b7718478) Reviewed-on: http://git-master/r/260013 Reviewed-by: Simone Willett <swillett@nvidia.com> Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'net/socket.c')
-rw-r--r--net/socket.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/socket.c b/net/socket.c
index 4ca1526db756..30d6ec51b620 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -56,6 +56,8 @@
* paradigm.
*
* Based upon Swansea University Computer Society NET3.039
+ *
+ * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved.
*/
#include <linux/mm.h>
@@ -913,6 +915,7 @@ static ssize_t do_sock_read(struct msghdr *msg, struct kiocb *iocb,
msg->msg_iov = (struct iovec *)iov;
msg->msg_iovlen = nr_segs;
msg->msg_flags = (file->f_flags & O_NONBLOCK) ? MSG_DONTWAIT : 0;
+ SOCK_INODE(sock)->i_private = get_thread_process(current);
return __sock_recvmsg(iocb, sock, msg, size, msg->msg_flags);
}
@@ -1148,6 +1151,7 @@ static unsigned int sock_poll(struct file *file, poll_table *wait)
* We can't return errors to poll, so it's either yes or no.
*/
sock = file->private_data;
+ SOCK_INODE(sock)->i_private = get_thread_process(current);
return sock->ops->poll(file, sock, wait);
}
@@ -1384,6 +1388,7 @@ SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)
retval = sock_map_fd(sock, flags & (O_CLOEXEC | O_NONBLOCK));
if (retval < 0)
goto out_release;
+ SOCK_INODE(sock)->i_private = get_thread_process(current);
out:
/* It may be already another descriptor 8) Not kernel problem. */