From: Andy P. <at...@us...> - 2002-04-09 16:29:16
|
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); } |