aboutsummaryrefslogtreecommitdiffstats
path: root/net/socket.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-08-18 00:25:51 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2012-09-26 21:08:50 -0400
commit56b31d1c9f1e6a3ad92e7bfe252721e05d92b285 (patch)
tree44521dbcdf51695b6092f2a4dabe83f460c2ed7c /net/socket.c
parent28407630513b1a86133db0ef8b39fabad6c494af (diff)
unexport sock_map_fd(), switch to sock_alloc_file()
Both modular callers of sock_map_fd() had been buggy; sctp one leaks descriptor and file if copy_to_user() fails, 9p one shouldn't be exposing file in the descriptor table at all. Switch both to sock_alloc_file(), export it, unexport sock_map_fd() and make it static. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'net/socket.c')
-rw-r--r--net/socket.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/socket.c b/net/socket.c
index a14ec19164b6..38a14311f3a6 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -346,7 +346,7 @@ static struct file_system_type sock_fs_type = {
346 * but we take care of internal coherence yet. 346 * but we take care of internal coherence yet.
347 */ 347 */
348 348
349static struct file *sock_alloc_file(struct socket *sock, int flags) 349struct file *sock_alloc_file(struct socket *sock, int flags)
350{ 350{
351 struct qstr name = { .name = "" }; 351 struct qstr name = { .name = "" };
352 struct path path; 352 struct path path;
@@ -375,8 +375,9 @@ static struct file *sock_alloc_file(struct socket *sock, int flags)
375 file->private_data = sock; 375 file->private_data = sock;
376 return file; 376 return file;
377} 377}
378EXPORT_SYMBOL(sock_alloc_file);
378 379
379int sock_map_fd(struct socket *sock, int flags) 380static int sock_map_fd(struct socket *sock, int flags)
380{ 381{
381 struct file *newfile; 382 struct file *newfile;
382 int fd = get_unused_fd_flags(flags); 383 int fd = get_unused_fd_flags(flags);
@@ -392,7 +393,6 @@ int sock_map_fd(struct socket *sock, int flags)
392 put_unused_fd(fd); 393 put_unused_fd(fd);
393 return PTR_ERR(newfile); 394 return PTR_ERR(newfile);
394} 395}
395EXPORT_SYMBOL(sock_map_fd);
396 396
397struct socket *sock_from_file(struct file *file, int *err) 397struct socket *sock_from_file(struct file *file, int *err)
398{ 398{