35 |
net/ipv6/raw.c | 12 +++++++++--- |
net/ipv6/raw.c | 12 +++++++++--- |
36 |
net/ipv6/udp.c | 9 ++++++++- |
net/ipv6/udp.c | 9 ++++++++- |
37 |
net/socket.c | 22 ++++++++++++++++++++++ |
net/socket.c | 22 ++++++++++++++++++++++ |
38 |
net/unix/af_unix.c | 7 +++++++ |
net/unix/af_unix.c | 9 +++++++++ |
39 |
security/Kconfig | 2 ++ |
security/Kconfig | 2 ++ |
40 |
security/Makefile | 3 +++ |
security/Makefile | 3 +++ |
41 |
36 files changed, 254 insertions(+), 11 deletions(-) |
36 files changed, 256 insertions(+), 11 deletions(-) |
42 |
|
|
43 |
--- linux-2.6.25.20-0.7.orig/arch/ia64/ia32/sys_ia32.c |
--- linux-2.6.25.20-0.7.orig/arch/ia64/ia32/sys_ia32.c |
44 |
+++ linux-2.6.25.20-0.7/arch/ia64/ia32/sys_ia32.c |
+++ linux-2.6.25.20-0.7/arch/ia64/ia32/sys_ia32.c |
1141 |
err = vfs_mknod(nd.path.dentry->d_inode, dentry, nd.path.mnt, |
err = vfs_mknod(nd.path.dentry->d_inode, dentry, nd.path.mnt, |
1142 |
mode, 0); |
mode, 0); |
1143 |
if (err) |
if (err) |
1144 |
@@ -1654,6 +1658,9 @@ static int unix_dgram_recvmsg(struct kio |
@@ -1641,6 +1645,7 @@ static int unix_dgram_recvmsg(struct kio |
1145 |
|
|
1146 |
|
mutex_lock(&u->readlock); |
1147 |
|
|
1148 |
|
+retry: |
1149 |
|
skb = skb_recv_datagram(sk, flags, noblock, &err); |
1150 |
|
if (!skb) { |
1151 |
|
unix_state_lock(sk); |
1152 |
|
@@ -1654,6 +1659,10 @@ static int unix_dgram_recvmsg(struct kio |
1153 |
|
|
1154 |
wake_up_interruptible_sync(&u->peer_wait); |
wake_up_interruptible_sync(&u->peer_wait); |
1155 |
|
|
1156 |
+ err = ccs_socket_post_recvmsg_permission(sk, skb); |
+ if (ccs_socket_post_recvmsg_permission(sk, skb)) { |
1157 |
+ if (err) |
+ skb_kill_datagram(sk, skb, flags); |
1158 |
+ goto out_free; |
+ goto retry; |
1159 |
|
+ } |
1160 |
if (msg->msg_name) |
if (msg->msg_name) |
1161 |
unix_copy_addr(msg, skb->sk); |
unix_copy_addr(msg, skb->sk); |
1162 |
|
|