summaryrefslogtreecommitdiff
path: root/uts/debian/patches/syscall-accept4.patch
blob: f9c690e693db3a3ccc0a3f7267d7436f529bcd3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
Description: implements accept via accept4 without breaking userspace
Index: uts/usr/src/uts/common/fs/sockfs/socksyscalls.c
===================================================================
--- uts.orig/usr/src/uts/common/fs/sockfs/socksyscalls.c	2014-03-01 16:18:28.000000000 +0400
+++ uts/usr/src/uts/common/fs/sockfs/socksyscalls.c	2014-04-02 17:54:58.629494896 +0400
@@ -623,7 +623,7 @@
 
 /*ARGSUSED3*/
 int
-accept(int sock, struct sockaddr *name, socklen_t *namelenp, int version,
+accept4(int sock, struct sockaddr *name, socklen_t *namelenp, int version,
     int flags)
 {
 	struct sonode *so;
@@ -638,7 +638,7 @@
 	struct sockaddr *addrp;
 	socklen_t addrlen;
 
-	dprint(1, ("accept(%d, %p, %p)\n",
+	dprint(1, ("accept4(%d, %p, %p)\n",
 	    sock, (void *)name, (void *)namelenp));
 
 	if (flags & ~(SOCK_CLOEXEC|SOCK_NONBLOCK|SOCK_NDELAY)) {
@@ -769,6 +769,12 @@
 }
 
 int
+accept(int sock, struct sockaddr *name, socklen_t *namelenp, int version)
+{
+	return accept4(sock, name, namelenp, version, 0);
+}
+
+int
 connect(int sock, struct sockaddr *name, socklen_t namelen, int version)
 {
 	struct sonode *so;
Index: uts/usr/src/uts/common/os/sysent.c
===================================================================
--- uts.orig/usr/src/uts/common/os/sysent.c	2014-04-02 17:54:58.387485689 +0400
+++ uts/usr/src/uts/common/os/sysent.c	2014-04-02 17:54:58.632725887 +0400
@@ -310,7 +310,8 @@
 int	so_socketpair(int[2]);
 int	bind(int, struct sockaddr *, socklen_t, int);
 int	listen(int, int, int);
-int	accept(int, struct sockaddr *, socklen_t *, int, int);
+int	accept(int, struct sockaddr *, socklen_t *, int);
+int	accept4(int, struct sockaddr *, socklen_t *, int, int);
 int	connect(int, struct sockaddr *, socklen_t, int);
 int	shutdown(int, int, int);
 ssize_t	recv(int, void *, size_t, int);
@@ -720,7 +721,7 @@
 	/* 223 */ IF_LP64(
 			SYSENT_NOSYS(),
 			SYSENT_CI("pwrite64", 	pwrite64, 	5)),
-	/* 224 */ SYSENT_LOADABLE(),			/* (was creat64) */
+	/* 224 */ SYSENT_CI("accept4",		accept4,		5),
 	/* 225 */ IF_LP64(
 			SYSENT_NOSYS(),
 			SYSENT_CI("open64",	open64,		3)),
@@ -732,7 +733,7 @@
 	/* 231 */ SYSENT_CI("so_socketpair",	so_socketpair,	1),
 	/* 232 */ SYSENT_CI("bind",		bind,		4),
 	/* 233 */ SYSENT_CI("listen",		listen,		3),
-	/* 234 */ SYSENT_CI("accept",		accept,		5),
+	/* 234 */ SYSENT_CI("accept",		accept,		4),
 	/* 235 */ SYSENT_CI("connect",		connect,	4),
 	/* 236 */ SYSENT_CI("shutdown",		shutdown,	3),
 	/* 237 */ SYSENT_CL("recv",		recv,		4),
@@ -1047,7 +1048,7 @@
 	/* 221 */ SYSENT_CI("getrlimit64", 	getrlimit64, 	2),
 	/* 222 */ SYSENT_CI("pread64", 		pread64, 	5),
 	/* 223 */ SYSENT_CI("pwrite64", 	pwrite64, 	5),
-	/* 224 */ SYSENT_LOADABLE32(),			/* (was creat64) */
+	/* 224 */ SYSENT_CI("accept4",		accept4,	5),
 	/* 225 */ SYSENT_CI("open64",		open64,		3),
 	/* 226 */ SYSENT_LOADABLE32(),		/* rpcsys */
 	/* 227 */ SYSENT_CI("zone",		zone,		6),
@@ -1057,7 +1058,7 @@
 	/* 231 */ SYSENT_CI("so_socketpair",	so_socketpair,	1),
 	/* 232 */ SYSENT_CI("bind",		bind,		4),
 	/* 233 */ SYSENT_CI("listen",		listen,		3),
-	/* 234 */ SYSENT_CI("accept",		accept,		5),
+	/* 234 */ SYSENT_CI("accept",		accept,		4),
 	/* 235 */ SYSENT_CI("connect",		connect,	4),
 	/* 236 */ SYSENT_CI("shutdown",		shutdown,	3),
 	/* 237 */ SYSENT_CI("recv",		recv32,		4),
Index: uts/usr/src/uts/intel/os/name_to_sysnum
===================================================================
--- uts.orig/usr/src/uts/intel/os/name_to_sysnum	2014-04-02 17:54:58.389432182 +0400
+++ uts/usr/src/uts/intel/os/name_to_sysnum	2014-04-02 17:54:58.634351005 +0400
@@ -207,6 +207,7 @@
 getrlimit64		221
 pread64			222
 pwrite64		223
+accept4			224
 open64			225
 rpcmod			226
 zone			227
Index: uts/usr/src/uts/sparc/os/name_to_sysnum
===================================================================
--- uts.orig/usr/src/uts/sparc/os/name_to_sysnum	2014-04-02 17:54:58.391531631 +0400
+++ uts/usr/src/uts/sparc/os/name_to_sysnum	2014-04-02 17:54:58.635722618 +0400
@@ -206,6 +206,7 @@
 getrlimit64		221
 pread64			222
 pwrite64		223
+accept4			224
 open64			225
 rpcmod			226
 zone			227
Index: uts/usr/src/uts/intel/ia32/ml/modstubs.s
===================================================================
--- uts.orig/usr/src/uts/intel/ia32/ml/modstubs.s	2014-04-02 17:54:49.803486497 +0400
+++ uts/usr/src/uts/intel/ia32/ml/modstubs.s	2014-04-02 17:54:58.638276404 +0400
@@ -470,6 +470,7 @@
 	NO_UNLOAD_STUB(sockfs, bind,  		nomod_zero);
 	NO_UNLOAD_STUB(sockfs, listen,  	nomod_zero);
 	NO_UNLOAD_STUB(sockfs, accept,  	nomod_zero);
+	NO_UNLOAD_STUB(sockfs, accept4,  	nomod_zero);
 	NO_UNLOAD_STUB(sockfs, connect,  	nomod_zero);
 	NO_UNLOAD_STUB(sockfs, shutdown,  	nomod_zero);
 	NO_UNLOAD_STUB(sockfs, recv,  		nomod_zero);
Index: uts/usr/src/uts/sparc/ml/modstubs.s
===================================================================
--- uts.orig/usr/src/uts/sparc/ml/modstubs.s	2014-04-02 17:54:49.815030700 +0400
+++ uts/usr/src/uts/sparc/ml/modstubs.s	2014-04-02 17:54:58.640779224 +0400
@@ -358,6 +358,7 @@
 	SCALL_NU_STUB(sockfs, bind,  		nomod_zero);
 	SCALL_NU_STUB(sockfs, listen,  		nomod_zero);
 	SCALL_NU_STUB(sockfs, accept,  		nomod_zero);
+	SCALL_NU_STUB(sockfs, accept4, 		nomod_zero);
 	SCALL_NU_STUB(sockfs, connect,  	nomod_zero);
 	SCALL_NU_STUB(sockfs, shutdown,  	nomod_zero);
 	SCALL_NU_STUB(sockfs, recv,  		nomod_zero);
Index: uts/usr/src/uts/common/sys/syscall.h
===================================================================
--- uts.orig/usr/src/uts/common/sys/syscall.h	2014-04-02 17:54:58.380386336 +0400
+++ uts/usr/src/uts/common/sys/syscall.h	2014-04-03 15:18:24.521689317 +0400
@@ -442,6 +442,7 @@
 #define	SYS_getrlimit64		221
 #define	SYS_pread64		222
 #define	SYS_pwrite64		223
+#define	SYS_accept4		224
 #define	SYS_open64		225
 #define	SYS_rpcsys		226
 #define	SYS_zone		227