Update of /cvsroot/linux-vax/kernel-2.4/net/unix
In directory usw-pr-cvs1:/tmp/cvs-serv32481/unix
Modified Files:
af_unix.c garbage.c
Log Message:
synch 2.4.15 commit 21
Index: af_unix.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/net/unix/af_unix.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- af_unix.c 25 Feb 2001 23:14:55 -0000 1.1.1.2
+++ af_unix.c 9 Apr 2002 16:29:02 -0000 1.2
@@ -111,8 +111,6 @@
#include <asm/checksum.h>
-#define min(a,b) (((a)<(b))?(a):(b))
-
int sysctl_unix_max_dgram_qlen = 10;
unix_socket *unix_socket_table[UNIX_HASH_SIZE+1];
@@ -674,6 +672,7 @@
atomic_set(&addr->refcnt, 1);
if (sunaddr->sun_path[0]) {
+ unsigned int mode;
err = 0;
/*
* Get the parent directory, calculate the hash for last
@@ -713,8 +712,8 @@
/*
* All right, let's create it.
*/
- err = vfs_mknod(nd.dentry->d_inode, dentry,
- S_IFSOCK|sock->inode->i_mode, 0);
+ mode = S_IFSOCK | (sock->inode->i_mode & ~current->fs->umask);
+ err = vfs_mknod(nd.dentry->d_inode, dentry, mode, 0);
if (err)
goto out_mknod_dput;
up(&nd.dentry->d_inode->i_sem);
@@ -1182,7 +1181,7 @@
if ((unsigned)len > sk->sndbuf - 32)
goto out;
- skb = sock_alloc_send_skb(sk, len, 0, msg->msg_flags&MSG_DONTWAIT, &err);
+ skb = sock_alloc_send_skb(sk, len, msg->msg_flags&MSG_DONTWAIT, &err);
if (skb==NULL)
goto out;
@@ -1285,7 +1284,6 @@
struct sockaddr_un *sunaddr=msg->msg_name;
int err,size;
struct sk_buff *skb;
- int limit=0;
int sent=0;
err = -EOPNOTSUPP;
@@ -1319,37 +1317,26 @@
if (size > sk->sndbuf/2 - 64)
size = sk->sndbuf/2 - 64;
- if (size > (128 * 1024) / 2)
- size = (128 * 1024) / 2;
+ if (size > SKB_MAX_ALLOC)
+ size = SKB_MAX_ALLOC;
/*
- * Keep to page sized kmalloc()'s as various people
- * have suggested. Big mallocs stress the vm too
- * much.
- */
-
- if (size > PAGE_SIZE-16)
- limit = PAGE_SIZE-16; /* Fall back to a page if we can't grab a big buffer this instant */
- else
- limit = 0; /* Otherwise just grab and wait */
-
- /*
* Grab a buffer
*/
- skb=sock_alloc_send_skb(sk,size,limit,msg->msg_flags&MSG_DONTWAIT, &err);
+ skb=sock_alloc_send_skb(sk,size,msg->msg_flags&MSG_DONTWAIT, &err);
if (skb==NULL)
goto out_err;
/*
* If you pass two values to the sock_alloc_send_skb
- * it tries to grab the large buffer with GFP_BUFFER
+ * it tries to grab the large buffer with GFP_NOFS
* (which can fail easily), and if it fails grab the
* fallback size buffer which is under a page and will
* succeed. [Alan]
*/
- size = min(size, skb_tailroom(skb));
+ size = min_t(int, size, skb_tailroom(skb));
memcpy(UNIXCREDS(skb), &scm->creds, sizeof(struct ucred));
if (scm->fp)
@@ -1581,7 +1568,7 @@
sunaddr = NULL;
}
- chunk = min(skb->len, size);
+ chunk = min_t(unsigned int, skb->len, size);
if (memcpy_toiovec(msg->msg_iov, skb->data, chunk)) {
skb_queue_head(&sk->receive_queue, skb);
if (copied == 0)
@@ -1821,6 +1808,7 @@
sendmsg: unix_stream_sendmsg,
recvmsg: unix_stream_recvmsg,
mmap: sock_no_mmap,
+ sendpage: sock_no_sendpage,
};
struct proto_ops unix_dgram_ops = {
@@ -1841,6 +1829,7 @@
sendmsg: unix_dgram_sendmsg,
recvmsg: unix_dgram_recvmsg,
mmap: sock_no_mmap,
+ sendpage: sock_no_sendpage,
};
struct net_proto_family unix_family_ops = {
@@ -1852,11 +1841,11 @@
extern void unix_sysctl_register(void);
extern void unix_sysctl_unregister(void);
#else
-static inline unix_sysctl_register() {};
-static inline unix_sysctl_unregister() {};
+static inline void unix_sysctl_register(void) {}
+static inline void unix_sysctl_unregister(void) {}
#endif
-static const char banner[] __initdata = KERN_INFO "NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.\n";
+static char banner[] __initdata = KERN_INFO "NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.\n";
static int __init af_unix_init(void)
{
Index: garbage.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/net/unix/garbage.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- garbage.c 25 Feb 2001 23:14:55 -0000 1.1.1.2
+++ garbage.c 9 Apr 2002 16:29:02 -0000 1.2
@@ -296,9 +296,6 @@
* Here we are. Hitlist is filled. Die.
*/
- while ((skb=__skb_dequeue(&hitlist))!=NULL) {
- kfree_skb(skb);
- }
-
+ __skb_queue_purge(&hitlist);
up(&unix_gc_sem);
}
|