)]}'
{
  "log": [
    {
      "commit": "c1f19b51d1d87f3e3bb7e6648f43f7d57ed2da6b",
      "tree": "d9525359409e3493b48e8676717cc11ed69b640a",
      "parents": [
        "15f0127d1d189fda3294b7823e3e654afca54055"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sat Jul 17 08:49:36 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 18 19:15:26 2010 -0700"
      },
      "message": "net: support time stamping in phy devices.\n\nThis patch adds a new networking option to allow hardware time stamps\nfrom PHY devices. When enabled, likely candidates among incoming and\noutgoing network packets are offered to the PHY driver for possible\ntime stamping. When accepted by the PHY driver, incoming packets are\ndeferred for later delivery by the driver.\n\nThe patch also adds phylib driver methods for the SIOCSHWTSTAMP ioctl\nand callbacks for transmit and receive time stamping. Drivers may\noptionally implement these functions.\n\nSigned-off-by: Richard Cochran \u003crichard.cochran@omicron.at\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "01893c82b4e6949f4e3a453c4faea34970359d76",
      "tree": "c4f417552c70a0e5296e0e4d975ebcd94ea19912",
      "parents": [
        "0a6efc78c0c22d60040da0dc98a0844e7c0d0647"
      ],
      "author": {
        "name": "Tetsuo Handa",
        "email": "penguin-kernel@I-love.SAKURA.ne.jp",
        "time": "Sun Jul 18 15:29:14 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 18 15:29:14 2010 -0700"
      },
      "message": "net: Remove MAX_SOCK_ADDR constant\n\nMAX_SOCK_ADDR is no longer used because commit 230b1839 \"net: Use standard\nstructures for generic socket address structures.\" replaced\n\"char address[MAX_SOCK_ADDR];\" with \"struct sockaddr_storage address;\".\n\nSigned-off-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c6d409cfd0fd41e7a0847875e4338ad648c9b96b",
      "tree": "7f346c6f41db5b448ebab504f3fae6bb0f28cf79",
      "parents": [
        "849c45423c0c108e08d67644728cc9b0ed225fa1"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jun 03 20:03:40 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 03 20:03:40 2010 -0700"
      },
      "message": "From abbffa2aa9bd6f8df16d0d0a102af677510d8b9a Mon Sep 17 00:00:00 2001\nFrom: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nDate: Thu, 3 Jun 2010 04:29:41 +0000\nSubject: [PATCH 2/3] net: net/socket.c and net/compat.c cleanups\n\ncleanup patch, to match modern coding style.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n---\n net/compat.c |   47 ++++++++---------\n net/socket.c |  165 ++++++++++++++++++++++++++++------------------------------\n 2 files changed, 102 insertions(+), 110 deletions(-)\n\ndiff --git a/net/compat.c b/net/compat.c\nindex 1cf7590..63d260e 100644\n--- a/net/compat.c\n+++ b/net/compat.c\n@@ -81,7 +81,7 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,\n \tint tot_len;\n\n \tif (kern_msg-\u003emsg_namelen) {\n-\t\tif (mode\u003d\u003dVERIFY_READ) {\n+\t\tif (mode \u003d\u003d VERIFY_READ) {\n \t\t\tint err \u003d move_addr_to_kernel(kern_msg-\u003emsg_name,\n \t\t\t\t\t\t      kern_msg-\u003emsg_namelen,\n \t\t\t\t\t\t      kern_address);\n@@ -354,7 +354,7 @@ static int do_set_attach_filter(struct socket *sock, int level, int optname,\n static int do_set_sock_timeout(struct socket *sock, int level,\n \t\tint optname, char __user *optval, unsigned int optlen)\n {\n-\tstruct compat_timeval __user *up \u003d (struct compat_timeval __user *) optval;\n+\tstruct compat_timeval __user *up \u003d (struct compat_timeval __user *)optval;\n \tstruct timeval ktime;\n \tmm_segment_t old_fs;\n \tint err;\n@@ -367,7 +367,7 @@ static int do_set_sock_timeout(struct socket *sock, int level,\n \t\treturn -EFAULT;\n \told_fs \u003d get_fs();\n \tset_fs(KERNEL_DS);\n-\terr \u003d sock_setsockopt(sock, level, optname, (char *) \u0026ktime, sizeof(ktime));\n+\terr \u003d sock_setsockopt(sock, level, optname, (char *)\u0026ktime, sizeof(ktime));\n \tset_fs(old_fs);\n\n \treturn err;\n@@ -389,11 +389,10 @@ asmlinkage long compat_sys_setsockopt(int fd, int level, int optname,\n \t\t\t\tchar __user *optval, unsigned int optlen)\n {\n \tint err;\n-\tstruct socket *sock;\n+\tstruct socket *sock \u003d sockfd_lookup(fd, \u0026err);\n\n-\tif ((sock \u003d sockfd_lookup(fd, \u0026err))!\u003dNULL)\n-\t{\n-\t\terr \u003d security_socket_setsockopt(sock,level,optname);\n+\tif (sock) {\n+\t\terr \u003d security_socket_setsockopt(sock, level, optname);\n \t\tif (err) {\n \t\t\tsockfd_put(sock);\n \t\t\treturn err;\n@@ -453,7 +452,7 @@ static int compat_sock_getsockopt(struct socket *sock, int level, int optname,\n int compat_sock_get_timestamp(struct sock *sk, struct timeval __user *userstamp)\n {\n \tstruct compat_timeval __user *ctv \u003d\n-\t\t\t(struct compat_timeval __user*) userstamp;\n+\t\t\t(struct compat_timeval __user *) userstamp;\n \tint err \u003d -ENOENT;\n \tstruct timeval tv;\n\n@@ -477,7 +476,7 @@ EXPORT_SYMBOL(compat_sock_get_timestamp);\n int compat_sock_get_timestampns(struct sock *sk, struct timespec __user *userstamp)\n {\n \tstruct compat_timespec __user *ctv \u003d\n-\t\t\t(struct compat_timespec __user*) userstamp;\n+\t\t\t(struct compat_timespec __user *) userstamp;\n \tint err \u003d -ENOENT;\n \tstruct timespec ts;\n\n@@ -502,12 +501,10 @@ asmlinkage long compat_sys_getsockopt(int fd, int level, int optname,\n \t\t\t\tchar __user *optval, int __user *optlen)\n {\n \tint err;\n-\tstruct socket *sock;\n+\tstruct socket *sock \u003d sockfd_lookup(fd, \u0026err);\n\n-\tif ((sock \u003d sockfd_lookup(fd, \u0026err))!\u003dNULL)\n-\t{\n-\t\terr \u003d security_socket_getsockopt(sock, level,\n-\t\t\t\t\t\t\t   optname);\n+\tif (sock) {\n+\t\terr \u003d security_socket_getsockopt(sock, level, optname);\n \t\tif (err) {\n \t\t\tsockfd_put(sock);\n \t\t\treturn err;\n@@ -557,7 +554,7 @@ struct compat_group_filter {\n\n int compat_mc_setsockopt(struct sock *sock, int level, int optname,\n \tchar __user *optval, unsigned int optlen,\n-\tint (*setsockopt)(struct sock *,int,int,char __user *,unsigned int))\n+\tint (*setsockopt)(struct sock *, int, int, char __user *, unsigned int))\n {\n \tchar __user\t*koptval \u003d optval;\n \tint\t\tkoptlen \u003d optlen;\n@@ -640,12 +637,11 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,\n \t}\n \treturn setsockopt(sock, level, optname, koptval, koptlen);\n }\n-\n EXPORT_SYMBOL(compat_mc_setsockopt);\n\n int compat_mc_getsockopt(struct sock *sock, int level, int optname,\n \tchar __user *optval, int __user *optlen,\n-\tint (*getsockopt)(struct sock *,int,int,char __user *,int __user *))\n+\tint (*getsockopt)(struct sock *, int, int, char __user *, int __user *))\n {\n \tstruct compat_group_filter __user *gf32 \u003d (void *)optval;\n \tstruct group_filter __user *kgf;\n@@ -681,7 +677,7 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname,\n \t    __put_user(interface, \u0026kgf-\u003egf_interface) ||\n \t    __put_user(fmode, \u0026kgf-\u003egf_fmode) ||\n \t    __put_user(numsrc, \u0026kgf-\u003egf_numsrc) ||\n-\t    copy_in_user(\u0026kgf-\u003egf_group,\u0026gf32-\u003egf_group,sizeof(kgf-\u003egf_group)))\n+\t    copy_in_user(\u0026kgf-\u003egf_group, \u0026gf32-\u003egf_group, sizeof(kgf-\u003egf_group)))\n \t\treturn -EFAULT;\n\n \terr \u003d getsockopt(sock, level, optname, (char __user *)kgf, koptlen);\n@@ -714,21 +710,22 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname,\n \t\tcopylen \u003d numsrc * sizeof(gf32-\u003egf_slist[0]);\n \t\tif (copylen \u003e klen)\n \t\t\tcopylen \u003d klen;\n-\t        if (copy_in_user(gf32-\u003egf_slist, kgf-\u003egf_slist, copylen))\n+\t\tif (copy_in_user(gf32-\u003egf_slist, kgf-\u003egf_slist, copylen))\n \t\t\treturn -EFAULT;\n \t}\n \treturn err;\n }\n-\n EXPORT_SYMBOL(compat_mc_getsockopt);\n\n /* Argument list sizes for compat_sys_socketcall */\n #define AL(x) ((x) * sizeof(u32))\n-static unsigned char nas[20]\u003d{AL(0),AL(3),AL(3),AL(3),AL(2),AL(3),\n-\t\t\t\tAL(3),AL(3),AL(4),AL(4),AL(4),AL(6),\n-\t\t\t\tAL(6),AL(2),AL(5),AL(5),AL(3),AL(3),\n-\t\t\t\tAL(4),AL(5)};\n+static unsigned char nas[20] \u003d {\n+\tAL(0), AL(3), AL(3), AL(3), AL(2), AL(3),\n+\tAL(3), AL(3), AL(4), AL(4), AL(4), AL(6),\n+\tAL(6), AL(2), AL(5), AL(5), AL(3), AL(3),\n+\tAL(4), AL(5)\n+};\n #undef AL\n\n asmlinkage long compat_sys_sendmsg(int fd, struct compat_msghdr __user *msg, unsigned flags)\n@@ -827,7 +824,7 @@ asmlinkage long compat_sys_socketcall(int call, u32 __user *args)\n \t\t\t\t\t  compat_ptr(a[4]), compat_ptr(a[5]));\n \t\tbreak;\n \tcase SYS_SHUTDOWN:\n-\t\tret \u003d sys_shutdown(a0,a1);\n+\t\tret \u003d sys_shutdown(a0, a1);\n \t\tbreak;\n \tcase SYS_SETSOCKOPT:\n \t\tret \u003d compat_sys_setsockopt(a0, a1, a[2],\ndiff --git a/net/socket.c b/net/socket.c\nindex 367d547..b63c051 100644\n--- a/net/socket.c\n+++ b/net/socket.c\n@@ -124,7 +124,7 @@ static int sock_fasync(int fd, struct file *filp, int on);\n static ssize_t sock_sendpage(struct file *file, struct page *page,\n \t\t\t     int offset, size_t size, loff_t *ppos, int more);\n static ssize_t sock_splice_read(struct file *file, loff_t *ppos,\n-\t\t\t        struct pipe_inode_info *pipe, size_t len,\n+\t\t\t\tstruct pipe_inode_info *pipe, size_t len,\n \t\t\t\tunsigned int flags);\n\n /*\n@@ -162,7 +162,7 @@ static const struct net_proto_family *net_families[NPROTO] __read_mostly;\n  *\tStatistics counters of the socket lists\n  */\n\n-static DEFINE_PER_CPU(int, sockets_in_use) \u003d 0;\n+static DEFINE_PER_CPU(int, sockets_in_use);\n\n /*\n  * Support routines.\n@@ -309,9 +309,9 @@ static int init_inodecache(void)\n }\n\n static const struct super_operations sockfs_ops \u003d {\n-\t.alloc_inode \u003d\tsock_alloc_inode,\n-\t.destroy_inode \u003dsock_destroy_inode,\n-\t.statfs \u003d\tsimple_statfs,\n+\t.alloc_inode\t\u003d sock_alloc_inode,\n+\t.destroy_inode\t\u003d sock_destroy_inode,\n+\t.statfs\t\t\u003d simple_statfs,\n };\n\n static int sockfs_get_sb(struct file_system_type *fs_type,\n@@ -411,6 +411,7 @@ int sock_map_fd(struct socket *sock, int flags)\n\n \treturn fd;\n }\n+EXPORT_SYMBOL(sock_map_fd);\n\n static struct socket *sock_from_file(struct file *file, int *err)\n {\n@@ -422,7 +423,7 @@ static struct socket *sock_from_file(struct file *file, int *err)\n }\n\n /**\n- *\tsockfd_lookup\t- \tGo from a file number to its socket slot\n+ *\tsockfd_lookup - Go from a file number to its socket slot\n  *\t@fd: file handle\n  *\t@err: pointer to an error code return\n  *\n@@ -450,6 +451,7 @@ struct socket *sockfd_lookup(int fd, int *err)\n \t\tfput(file);\n \treturn sock;\n }\n+EXPORT_SYMBOL(sockfd_lookup);\n\n static struct socket *sockfd_lookup_light(int fd, int *err, int *fput_needed)\n {\n@@ -540,6 +542,7 @@ void sock_release(struct socket *sock)\n \t}\n \tsock-\u003efile \u003d NULL;\n }\n+EXPORT_SYMBOL(sock_release);\n\n int sock_tx_timestamp(struct msghdr *msg, struct sock *sk,\n \t\t      union skb_shared_tx *shtx)\n@@ -586,6 +589,7 @@ int sock_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)\n \t\tret \u003d wait_on_sync_kiocb(\u0026iocb);\n \treturn ret;\n }\n+EXPORT_SYMBOL(sock_sendmsg);\n\n int kernel_sendmsg(struct socket *sock, struct msghdr *msg,\n \t\t   struct kvec *vec, size_t num, size_t size)\n@@ -604,6 +608,7 @@ int kernel_sendmsg(struct socket *sock, struct msghdr *msg,\n \tset_fs(oldfs);\n \treturn result;\n }\n+EXPORT_SYMBOL(kernel_sendmsg);\n\n static int ktime2ts(ktime_t kt, struct timespec *ts)\n {\n@@ -664,7 +669,6 @@ void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,\n \t\tput_cmsg(msg, SOL_SOCKET,\n \t\t\t SCM_TIMESTAMPING, sizeof(ts), \u0026ts);\n }\n-\n EXPORT_SYMBOL_GPL(__sock_recv_timestamp);\n\n inline void sock_recv_drops(struct msghdr *msg, struct sock *sk, struct sk_buff *skb)\n@@ -720,6 +724,7 @@ int sock_recvmsg(struct socket *sock, struct msghdr *msg,\n \t\tret \u003d wait_on_sync_kiocb(\u0026iocb);\n \treturn ret;\n }\n+EXPORT_SYMBOL(sock_recvmsg);\n\n static int sock_recvmsg_nosec(struct socket *sock, struct msghdr *msg,\n \t\t\t      size_t size, int flags)\n@@ -752,6 +757,7 @@ int kernel_recvmsg(struct socket *sock, struct msghdr *msg,\n \tset_fs(oldfs);\n \treturn result;\n }\n+EXPORT_SYMBOL(kernel_recvmsg);\n\n static void sock_aio_dtor(struct kiocb *iocb)\n {\n@@ -774,7 +780,7 @@ static ssize_t sock_sendpage(struct file *file, struct page *page,\n }\n\n static ssize_t sock_splice_read(struct file *file, loff_t *ppos,\n-\t\t\t        struct pipe_inode_info *pipe, size_t len,\n+\t\t\t\tstruct pipe_inode_info *pipe, size_t len,\n \t\t\t\tunsigned int flags)\n {\n \tstruct socket *sock \u003d file-\u003eprivate_data;\n@@ -887,7 +893,7 @@ static ssize_t sock_aio_write(struct kiocb *iocb, const struct iovec *iov,\n  */\n\n static DEFINE_MUTEX(br_ioctl_mutex);\n-static int (*br_ioctl_hook) (struct net *, unsigned int cmd, void __user *arg) \u003d NULL;\n+static int (*br_ioctl_hook) (struct net *, unsigned int cmd, void __user *arg);\n\n void brioctl_set(int (*hook) (struct net *, unsigned int, void __user *))\n {\n@@ -895,7 +901,6 @@ void brioctl_set(int (*hook) (struct net *, unsigned int, void __user *))\n \tbr_ioctl_hook \u003d hook;\n \tmutex_unlock(\u0026br_ioctl_mutex);\n }\n-\n EXPORT_SYMBOL(brioctl_set);\n\n static DEFINE_MUTEX(vlan_ioctl_mutex);\n@@ -907,7 +912,6 @@ void vlan_ioctl_set(int (*hook) (struct net *, void __user *))\n \tvlan_ioctl_hook \u003d hook;\n \tmutex_unlock(\u0026vlan_ioctl_mutex);\n }\n-\n EXPORT_SYMBOL(vlan_ioctl_set);\n\n static DEFINE_MUTEX(dlci_ioctl_mutex);\n@@ -919,7 +923,6 @@ void dlci_ioctl_set(int (*hook) (unsigned int, void __user *))\n \tdlci_ioctl_hook \u003d hook;\n \tmutex_unlock(\u0026dlci_ioctl_mutex);\n }\n-\n EXPORT_SYMBOL(dlci_ioctl_set);\n\n static long sock_do_ioctl(struct net *net, struct socket *sock,\n@@ -1047,6 +1050,7 @@ out_release:\n \tsock \u003d NULL;\n \tgoto out;\n }\n+EXPORT_SYMBOL(sock_create_lite);\n\n /* No kernel lock held - perfect */\n static unsigned int sock_poll(struct file *file, poll_table *wait)\n@@ -1147,6 +1151,7 @@ call_kill:\n \trcu_read_unlock();\n \treturn 0;\n }\n+EXPORT_SYMBOL(sock_wake_async);\n\n static int __sock_create(struct net *net, int family, int type, int protocol,\n \t\t\t struct socket **res, int kern)\n@@ -1265,11 +1270,13 @@ int sock_create(int family, int type, int protocol, struct socket **res)\n {\n \treturn __sock_create(current-\u003ensproxy-\u003enet_ns, family, type, protocol, res, 0);\n }\n+EXPORT_SYMBOL(sock_create);\n\n int sock_create_kern(int family, int type, int protocol, struct socket **res)\n {\n \treturn __sock_create(\u0026init_net, family, type, protocol, res, 1);\n }\n+EXPORT_SYMBOL(sock_create_kern);\n\n SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)\n {\n@@ -1474,7 +1481,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,\n \t\tgoto out;\n\n \terr \u003d -ENFILE;\n-\tif (!(newsock \u003d sock_alloc()))\n+\tnewsock \u003d sock_alloc();\n+\tif (!newsock)\n \t\tgoto out_put;\n\n \tnewsock-\u003etype \u003d sock-\u003etype;\n@@ -1861,8 +1869,7 @@ SYSCALL_DEFINE3(sendmsg, int, fd, struct msghdr __user *, msg, unsigned, flags)\n \tif (MSG_CMSG_COMPAT \u0026 flags) {\n \t\tif (get_compat_msghdr(\u0026msg_sys, msg_compat))\n \t\t\treturn -EFAULT;\n-\t}\n-\telse if (copy_from_user(\u0026msg_sys, msg, sizeof(struct msghdr)))\n+\t} else if (copy_from_user(\u0026msg_sys, msg, sizeof(struct msghdr)))\n \t\treturn -EFAULT;\n\n \tsock \u003d sockfd_lookup_light(fd, \u0026err, \u0026fput_needed);\n@@ -1964,8 +1971,7 @@ static int __sys_recvmsg(struct socket *sock, struct msghdr __user *msg,\n \tif (MSG_CMSG_COMPAT \u0026 flags) {\n \t\tif (get_compat_msghdr(msg_sys, msg_compat))\n \t\t\treturn -EFAULT;\n-\t}\n-\telse if (copy_from_user(msg_sys, msg, sizeof(struct msghdr)))\n+\t} else if (copy_from_user(msg_sys, msg, sizeof(struct msghdr)))\n \t\treturn -EFAULT;\n\n \terr \u003d -EMSGSIZE;\n@@ -2191,10 +2197,10 @@ SYSCALL_DEFINE5(recvmmsg, int, fd, struct mmsghdr __user *, mmsg,\n /* Argument list sizes for sys_socketcall */\n #define AL(x) ((x) * sizeof(unsigned long))\n static const unsigned char nargs[20] \u003d {\n-\tAL(0),AL(3),AL(3),AL(3),AL(2),AL(3),\n-\tAL(3),AL(3),AL(4),AL(4),AL(4),AL(6),\n-\tAL(6),AL(2),AL(5),AL(5),AL(3),AL(3),\n-\tAL(4),AL(5)\n+\tAL(0), AL(3), AL(3), AL(3), AL(2), AL(3),\n+\tAL(3), AL(3), AL(4), AL(4), AL(4), AL(6),\n+\tAL(6), AL(2), AL(5), AL(5), AL(3), AL(3),\n+\tAL(4), AL(5)\n };\n\n #undef AL\n@@ -2340,6 +2346,7 @@ int sock_register(const struct net_proto_family *ops)\n \tprintk(KERN_INFO \"NET: Registered protocol family %d\\n\", ops-\u003efamily);\n \treturn err;\n }\n+EXPORT_SYMBOL(sock_register);\n\n /**\n  *\tsock_unregister - remove a protocol handler\n@@ -2366,6 +2373,7 @@ void sock_unregister(int family)\n\n \tprintk(KERN_INFO \"NET: Unregistered protocol family %d\\n\", family);\n }\n+EXPORT_SYMBOL(sock_unregister);\n\n static int __init sock_init(void)\n {\n@@ -2490,13 +2498,13 @@ static int dev_ifconf(struct net *net, struct compat_ifconf __user *uifc32)\n \t\tifc.ifc_req \u003d NULL;\n \t\tuifc \u003d compat_alloc_user_space(sizeof(struct ifconf));\n \t} else {\n-\t\tsize_t len \u003d((ifc32.ifc_len / sizeof (struct compat_ifreq)) + 1) *\n-\t\t\tsizeof (struct ifreq);\n+\t\tsize_t len \u003d ((ifc32.ifc_len / sizeof(struct compat_ifreq)) + 1) *\n+\t\t\tsizeof(struct ifreq);\n \t\tuifc \u003d compat_alloc_user_space(sizeof(struct ifconf) + len);\n \t\tifc.ifc_len \u003d len;\n \t\tifr \u003d ifc.ifc_req \u003d (void __user *)(uifc + 1);\n \t\tifr32 \u003d compat_ptr(ifc32.ifcbuf);\n-\t\tfor (i \u003d 0; i \u003c ifc32.ifc_len; i +\u003d sizeof (struct compat_ifreq)) {\n+\t\tfor (i \u003d 0; i \u003c ifc32.ifc_len; i +\u003d sizeof(struct compat_ifreq)) {\n \t\t\tif (copy_in_user(ifr, ifr32, sizeof(struct compat_ifreq)))\n \t\t\t\treturn -EFAULT;\n \t\t\tifr++;\n@@ -2516,9 +2524,9 @@ static int dev_ifconf(struct net *net, struct compat_ifconf __user *uifc32)\n \tifr \u003d ifc.ifc_req;\n \tifr32 \u003d compat_ptr(ifc32.ifcbuf);\n \tfor (i \u003d 0, j \u003d 0;\n-             i + sizeof (struct compat_ifreq) \u003c\u003d ifc32.ifc_len \u0026\u0026 j \u003c ifc.ifc_len;\n-\t     i +\u003d sizeof (struct compat_ifreq), j +\u003d sizeof (struct ifreq)) {\n-\t\tif (copy_in_user(ifr32, ifr, sizeof (struct compat_ifreq)))\n+\t     i + sizeof(struct compat_ifreq) \u003c\u003d ifc32.ifc_len \u0026\u0026 j \u003c ifc.ifc_len;\n+\t     i +\u003d sizeof(struct compat_ifreq), j +\u003d sizeof(struct ifreq)) {\n+\t\tif (copy_in_user(ifr32, ifr, sizeof(struct compat_ifreq)))\n \t\t\treturn -EFAULT;\n \t\tifr32++;\n \t\tifr++;\n@@ -2567,7 +2575,7 @@ static int compat_siocwandev(struct net *net, struct compat_ifreq __user *uifr32\n \tcompat_uptr_t uptr32;\n \tstruct ifreq __user *uifr;\n\n-\tuifr \u003d compat_alloc_user_space(sizeof (*uifr));\n+\tuifr \u003d compat_alloc_user_space(sizeof(*uifr));\n \tif (copy_in_user(uifr, uifr32, sizeof(struct compat_ifreq)))\n \t\treturn -EFAULT;\n\n@@ -2601,9 +2609,9 @@ static int bond_ioctl(struct net *net, unsigned int cmd,\n \t\t\treturn -EFAULT;\n\n \t\told_fs \u003d get_fs();\n-\t\tset_fs (KERNEL_DS);\n+\t\tset_fs(KERNEL_DS);\n \t\terr \u003d dev_ioctl(net, cmd, \u0026kifr);\n-\t\tset_fs (old_fs);\n+\t\tset_fs(old_fs);\n\n \t\treturn err;\n \tcase SIOCBONDSLAVEINFOQUERY:\n@@ -2710,9 +2718,9 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd,\n \t\treturn -EFAULT;\n\n \told_fs \u003d get_fs();\n-\tset_fs (KERNEL_DS);\n+\tset_fs(KERNEL_DS);\n \terr \u003d dev_ioctl(net, cmd, (void __user *)\u0026ifr);\n-\tset_fs (old_fs);\n+\tset_fs(old_fs);\n\n \tif (cmd \u003d\u003d SIOCGIFMAP \u0026\u0026 !err) {\n \t\terr \u003d copy_to_user(uifr32, \u0026ifr, sizeof(ifr.ifr_name));\n@@ -2734,7 +2742,7 @@ static int compat_siocshwtstamp(struct net *net, struct compat_ifreq __user *uif\n \tcompat_uptr_t uptr32;\n \tstruct ifreq __user *uifr;\n\n-\tuifr \u003d compat_alloc_user_space(sizeof (*uifr));\n+\tuifr \u003d compat_alloc_user_space(sizeof(*uifr));\n \tif (copy_in_user(uifr, uifr32, sizeof(struct compat_ifreq)))\n \t\treturn -EFAULT;\n\n@@ -2750,20 +2758,20 @@ static int compat_siocshwtstamp(struct net *net, struct compat_ifreq __user *uif\n }\n\n struct rtentry32 {\n-\tu32   \t\trt_pad1;\n+\tu32\t\trt_pad1;\n \tstruct sockaddr rt_dst;         /* target address               */\n \tstruct sockaddr rt_gateway;     /* gateway addr (RTF_GATEWAY)   */\n \tstruct sockaddr rt_genmask;     /* target network mask (IP)     */\n-\tunsigned short  rt_flags;\n-\tshort           rt_pad2;\n-\tu32   \t\trt_pad3;\n-\tunsigned char   rt_tos;\n-\tunsigned char   rt_class;\n-\tshort           rt_pad4;\n-\tshort           rt_metric;      /* +1 for binary compatibility! */\n+\tunsigned short\trt_flags;\n+\tshort\t\trt_pad2;\n+\tu32\t\trt_pad3;\n+\tunsigned char\trt_tos;\n+\tunsigned char\trt_class;\n+\tshort\t\trt_pad4;\n+\tshort\t\trt_metric;      /* +1 for binary compatibility! */\n \t/* char * */ u32 rt_dev;        /* forcing the device at add    */\n-\tu32   \t\trt_mtu;         /* per route MTU/Window         */\n-\tu32   \t\trt_window;      /* Window clamping              */\n+\tu32\t\trt_mtu;         /* per route MTU/Window         */\n+\tu32\t\trt_window;      /* Window clamping              */\n \tunsigned short  rt_irtt;        /* Initial RTT                  */\n };\n\n@@ -2793,29 +2801,29 @@ static int routing_ioctl(struct net *net, struct socket *sock,\n\n \tif (sock \u0026\u0026 sock-\u003esk \u0026\u0026 sock-\u003esk-\u003esk_family \u003d\u003d AF_INET6) { /* ipv6 */\n \t\tstruct in6_rtmsg32 __user *ur6 \u003d argp;\n-\t\tret \u003d copy_from_user (\u0026r6.rtmsg_dst, \u0026(ur6-\u003ertmsg_dst),\n+\t\tret \u003d copy_from_user(\u0026r6.rtmsg_dst, \u0026(ur6-\u003ertmsg_dst),\n \t\t\t3 * sizeof(struct in6_addr));\n-\t\tret |\u003d __get_user (r6.rtmsg_type, \u0026(ur6-\u003ertmsg_type));\n-\t\tret |\u003d __get_user (r6.rtmsg_dst_len, \u0026(ur6-\u003ertmsg_dst_len));\n-\t\tret |\u003d __get_user (r6.rtmsg_src_len, \u0026(ur6-\u003ertmsg_src_len));\n-\t\tret |\u003d __get_user (r6.rtmsg_metric, \u0026(ur6-\u003ertmsg_metric));\n-\t\tret |\u003d __get_user (r6.rtmsg_info, \u0026(ur6-\u003ertmsg_info));\n-\t\tret |\u003d __get_user (r6.rtmsg_flags, \u0026(ur6-\u003ertmsg_flags));\n-\t\tret |\u003d __get_user (r6.rtmsg_ifindex, \u0026(ur6-\u003ertmsg_ifindex));\n+\t\tret |\u003d __get_user(r6.rtmsg_type, \u0026(ur6-\u003ertmsg_type));\n+\t\tret |\u003d __get_user(r6.rtmsg_dst_len, \u0026(ur6-\u003ertmsg_dst_len));\n+\t\tret |\u003d __get_user(r6.rtmsg_src_len, \u0026(ur6-\u003ertmsg_src_len));\n+\t\tret |\u003d __get_user(r6.rtmsg_metric, \u0026(ur6-\u003ertmsg_metric));\n+\t\tret |\u003d __get_user(r6.rtmsg_info, \u0026(ur6-\u003ertmsg_info));\n+\t\tret |\u003d __get_user(r6.rtmsg_flags, \u0026(ur6-\u003ertmsg_flags));\n+\t\tret |\u003d __get_user(r6.rtmsg_ifindex, \u0026(ur6-\u003ertmsg_ifindex));\n\n \t\tr \u003d (void *) \u0026r6;\n \t} else { /* ipv4 */\n \t\tstruct rtentry32 __user *ur4 \u003d argp;\n-\t\tret \u003d copy_from_user (\u0026r4.rt_dst, \u0026(ur4-\u003ert_dst),\n+\t\tret \u003d copy_from_user(\u0026r4.rt_dst, \u0026(ur4-\u003ert_dst),\n \t\t\t\t\t3 * sizeof(struct sockaddr));\n-\t\tret |\u003d __get_user (r4.rt_flags, \u0026(ur4-\u003ert_flags));\n-\t\tret |\u003d __get_user (r4.rt_metric, \u0026(ur4-\u003ert_metric));\n-\t\tret |\u003d __get_user (r4.rt_mtu, \u0026(ur4-\u003ert_mtu));\n-\t\tret |\u003d __get_user (r4.rt_window, \u0026(ur4-\u003ert_window));\n-\t\tret |\u003d __get_user (r4.rt_irtt, \u0026(ur4-\u003ert_irtt));\n-\t\tret |\u003d __get_user (rtdev, \u0026(ur4-\u003ert_dev));\n+\t\tret |\u003d __get_user(r4.rt_flags, \u0026(ur4-\u003ert_flags));\n+\t\tret |\u003d __get_user(r4.rt_metric, \u0026(ur4-\u003ert_metric));\n+\t\tret |\u003d __get_user(r4.rt_mtu, \u0026(ur4-\u003ert_mtu));\n+\t\tret |\u003d __get_user(r4.rt_window, \u0026(ur4-\u003ert_window));\n+\t\tret |\u003d __get_user(r4.rt_irtt, \u0026(ur4-\u003ert_irtt));\n+\t\tret |\u003d __get_user(rtdev, \u0026(ur4-\u003ert_dev));\n \t\tif (rtdev) {\n-\t\t\tret |\u003d copy_from_user (devname, compat_ptr(rtdev), 15);\n+\t\t\tret |\u003d copy_from_user(devname, compat_ptr(rtdev), 15);\n \t\t\tr4.rt_dev \u003d devname; devname[15] \u003d 0;\n \t\t} else\n \t\t\tr4.rt_dev \u003d NULL;\n@@ -2828,9 +2836,9 @@ static int routing_ioctl(struct net *net, struct socket *sock,\n \t\tgoto out;\n \t}\n\n-\tset_fs (KERNEL_DS);\n+\tset_fs(KERNEL_DS);\n \tret \u003d sock_do_ioctl(net, sock, cmd, (unsigned long) r);\n-\tset_fs (old_fs);\n+\tset_fs(old_fs);\n\n out:\n \treturn ret;\n@@ -2993,11 +3001,13 @@ int kernel_bind(struct socket *sock, struct sockaddr *addr, int addrlen)\n {\n \treturn sock-\u003eops-\u003ebind(sock, addr, addrlen);\n }\n+EXPORT_SYMBOL(kernel_bind);\n\n int kernel_listen(struct socket *sock, int backlog)\n {\n \treturn sock-\u003eops-\u003elisten(sock, backlog);\n }\n+EXPORT_SYMBOL(kernel_listen);\n\n int kernel_accept(struct socket *sock, struct socket **newsock, int flags)\n {\n@@ -3022,24 +3032,28 @@ int kernel_accept(struct socket *sock, struct socket **newsock, int flags)\n done:\n \treturn err;\n }\n+EXPORT_SYMBOL(kernel_accept);\n\n int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen,\n \t\t   int flags)\n {\n \treturn sock-\u003eops-\u003econnect(sock, addr, addrlen, flags);\n }\n+EXPORT_SYMBOL(kernel_connect);\n\n int kernel_getsockname(struct socket *sock, struct sockaddr *addr,\n \t\t\t int *addrlen)\n {\n \treturn sock-\u003eops-\u003egetname(sock, addr, addrlen, 0);\n }\n+EXPORT_SYMBOL(kernel_getsockname);\n\n int kernel_getpeername(struct socket *sock, struct sockaddr *addr,\n \t\t\t int *addrlen)\n {\n \treturn sock-\u003eops-\u003egetname(sock, addr, addrlen, 1);\n }\n+EXPORT_SYMBOL(kernel_getpeername);\n\n int kernel_getsockopt(struct socket *sock, int level, int optname,\n \t\t\tchar *optval, int *optlen)\n@@ -3056,6 +3070,7 @@ int kernel_getsockopt(struct socket *sock, int level, int optname,\n \tset_fs(oldfs);\n \treturn err;\n }\n+EXPORT_SYMBOL(kernel_getsockopt);\n\n int kernel_setsockopt(struct socket *sock, int level, int optname,\n \t\t\tchar *optval, unsigned int optlen)\n@@ -3072,6 +3087,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname,\n \tset_fs(oldfs);\n \treturn err;\n }\n+EXPORT_SYMBOL(kernel_setsockopt);\n\n int kernel_sendpage(struct socket *sock, struct page *page, int offset,\n \t\t    size_t size, int flags)\n@@ -3083,6 +3099,7 @@ int kernel_sendpage(struct socket *sock, struct page *page, int offset,\n\n \treturn sock_no_sendpage(sock, page, offset, size, flags);\n }\n+EXPORT_SYMBOL(kernel_sendpage);\n\n int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg)\n {\n@@ -3095,33 +3112,11 @@ int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg)\n\n \treturn err;\n }\n+EXPORT_SYMBOL(kernel_sock_ioctl);\n\n int kernel_sock_shutdown(struct socket *sock, enum sock_shutdown_cmd how)\n {\n \treturn sock-\u003eops-\u003eshutdown(sock, how);\n }\n-\n-EXPORT_SYMBOL(sock_create);\n-EXPORT_SYMBOL(sock_create_kern);\n-EXPORT_SYMBOL(sock_create_lite);\n-EXPORT_SYMBOL(sock_map_fd);\n-EXPORT_SYMBOL(sock_recvmsg);\n-EXPORT_SYMBOL(sock_register);\n-EXPORT_SYMBOL(sock_release);\n-EXPORT_SYMBOL(sock_sendmsg);\n-EXPORT_SYMBOL(sock_unregister);\n-EXPORT_SYMBOL(sock_wake_async);\n-EXPORT_SYMBOL(sockfd_lookup);\n-EXPORT_SYMBOL(kernel_sendmsg);\n-EXPORT_SYMBOL(kernel_recvmsg);\n-EXPORT_SYMBOL(kernel_bind);\n-EXPORT_SYMBOL(kernel_listen);\n-EXPORT_SYMBOL(kernel_accept);\n-EXPORT_SYMBOL(kernel_connect);\n-EXPORT_SYMBOL(kernel_getsockname);\n-EXPORT_SYMBOL(kernel_getpeername);\n-EXPORT_SYMBOL(kernel_getsockopt);\n-EXPORT_SYMBOL(kernel_setsockopt);\n-EXPORT_SYMBOL(kernel_sendpage);\n-EXPORT_SYMBOL(kernel_sock_ioctl);\n EXPORT_SYMBOL(kernel_sock_shutdown);\n+\n--\n1.7.0.4\n"
    },
    {
      "commit": "f845172531fb7410c7fb7780b1a6e51ee6df7d52",
      "tree": "ef1030d0ad9d9dbc8fe800a145c587f04be50ade",
      "parents": [
        "eda6e6f86b5f95b982ac7ebf7cf5be2a29a291e9"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon May 24 00:12:34 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 24 00:12:34 2010 -0700"
      },
      "message": "cls_cgroup: Store classid in struct sock\n\nUp until now cls_cgroup has relied on fetching the classid out of\nthe current executing thread.  This runs into trouble when a packet\nprocessing is delayed in which case it may execute out of another\nthread\u0027s context.\n\nFurthermore, even when a packet is not delayed we may fail to\nclassify it if soft IRQs have been disabled, because this scenario\nis indistinguishable from one where a packet unrelated to the\ncurrent thread is processed by a real soft IRQ.\n\nIn fact, the current semantics is inherently broken, as a single\nskb may be constructed out of the writes of two different tasks.\nA different manifestation of this problem is when the TCP stack\ntransmits in response of an incoming ACK.  This is currently\nunclassified.\n\nAs we already have a concept of packet ownership for accounting\npurposes in the skb-\u003esk pointer, this is a natural place to store\nthe classid in a persistent manner.\n\nThis patch adds the cls_cgroup classid in struct sock, filling up\nan existing hole on 64-bit :)\n\nThe value is set at socket creation time.  So all sockets created\nvia socket(2) automatically gains the ID of the thread creating it.\nWhenever another process touches the socket by either reading or\nwriting to it, we will change the socket classid to that of the\nprocess if it has a valid (non-zero) classid.\n\nFor sockets created on inbound connections through accept(2), we\ninherit the classid of the original listening socket through\nsk_clone, possibly preceding the actual accept(2) call.\n\nIn order to minimise risks, I have not made this the authoritative\nclassid.  For now it is only used as a backup when we execute\nwith soft IRQs disabled.  Once we\u0027re completely happy with its\nsemantics we can use it as the sole classid.\n\nFootnote: I have rearranged the error path on cls_group module\ncreation.  If we didn\u0027t do this, then there is a window where\nsomeone could create a tc rule using cls_group before the cgroup\nsubsystem has been registered.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ccbd6a5a4f76e821ed36f69fdaf59817c3a7f18e",
      "tree": "9fd681809e588913cc312f63ae0e701f18599afc",
      "parents": [
        "935e2a26b85003c0bd52b6c92712c2f77a5f9d33"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri May 14 10:58:26 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 17:44:35 2010 -0700"
      },
      "message": "net: Remove unnecessary semicolons after switch statements\n\nAlso added an explicit break; to avoid\na fallthrough in net/ipv4/tcp_input.c\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "43815482370c510c569fd18edb57afcb0fa8cab6",
      "tree": "063efaae3758402b84f056438b704d1de68f7837",
      "parents": [
        "83d7eb2979cd3390c375470225dd2d8f2009bc70"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 29 11:01:49 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 01 15:00:15 2010 -0700"
      },
      "message": "net: sock_def_readable() and friends RCU conversion\n\nsk_callback_lock rwlock actually protects sk-\u003esk_sleep pointer, so we\nneed two atomic operations (and associated dirtying) per incoming\npacket.\n\nRCU conversion is pretty much needed :\n\n1) Add a new structure, called \"struct socket_wq\" to hold all fields\nthat will need rcu_read_lock() protection (currently: a\nwait_queue_head_t and a struct fasync_struct pointer).\n\n[Future patch will add a list anchor for wakeup coalescing]\n\n2) Attach one of such structure to each \"struct socket\" created in\nsock_alloc_inode().\n\n3) Respect RCU grace period when freeing a \"struct socket_wq\"\n\n4) Change sk_sleep pointer in \"struct sock\" by sk_wq, pointer to \"struct\nsocket_wq\"\n\n5) Change sk_sleep() function to use new sk-\u003esk_wq instead of\nsk-\u003esk_sleep\n\n6) Change sk_has_sleeper() to wq_has_sleeper() that must be used inside\na rcu_read_lock() section.\n\n7) Change all sk_has_sleeper() callers to :\n  - Use rcu_read_lock() instead of read_lock(\u0026sk-\u003esk_callback_lock)\n  - Use wq_has_sleeper() to eventually wakeup tasks.\n  - Use rcu_read_unlock() instead of read_unlock(\u0026sk-\u003esk_callback_lock)\n\n8) sock_wake_async() is modified to use rcu protection as well.\n\n9) Exceptions :\n  macvtap, drivers/net/tun.c, af_unix use integrated \"struct socket_wq\"\ninstead of dynamically allocated ones. They dont need rcu freeing.\n\nSome cleanups or followups are probably needed, (possible\nsk_callback_lock conversion to a spinlock for example...).\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "767dd03369ac18af58efdef0383d6eb986eab426",
      "tree": "5af8a861110676a084078a168c27fd3935d41f13",
      "parents": [
        "21851264120b0bd1f953328cb131abcfa9305bc3"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Apr 28 19:14:43 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 30 16:29:42 2010 -0700"
      },
      "message": "net: speedup sock_recv_ts_and_drops()\n\nsock_recv_ts_and_drops() is fat and slow (~ 4% of cpu time on some\nprofiles)\n\nWe can test all socket flags at once to make fast path fast again.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "989a2979205dd34269382b357e6d4b4b6956b889",
      "tree": "2f504e9f4d8d418dd8fb2d042b076c1318232360",
      "parents": [
        "e5700aff144fbbba46be40049f0c55fb57283777"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Apr 14 09:55:35 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 21 16:19:29 2010 -0700"
      },
      "message": "fasync: RCU and fine grained locking\n\nkill_fasync() uses a central rwlock, candidate for RCU conversion, to\navoid cache line ping pongs on SMP.\n\nfasync_remove_entry() and fasync_add_entry() can disable IRQS on a short\nsection instead during whole list scan.\n\nUse a spinlock per fasync_struct to synchronize kill_fasync_rcu() and\nfasync_{remove|add}_entry(). This spinlock is IRQ safe, so sock_fasync()\ndoesnt need its own implementation and can use fasync_helper(), to\nreduce code size and complexity.\n\nWe can remove __kill_fasync() direct use in net/socket.c, and rename it\nto kill_fasync_rcu().\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "871039f02f8ec4ab2e5e9010718caa8e085786f1",
      "tree": "f0d2b3127fc48c862967d68c46c2d46668137515",
      "parents": [
        "e4077e018b5ead3de9951fc01d8bf12eeeeeefed",
        "4a1032faac94ebbf647460ae3e06fc21146eb280"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 14:53:53 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 14:53:53 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/stmmac/stmmac_main.c\n\tdrivers/net/wireless/wl12xx/wl1271_cmd.c\n\tdrivers/net/wireless/wl12xx/wl1271_main.c\n\tdrivers/net/wireless/wl12xx/wl1271_spi.c\n\tnet/core/ethtool.c\n\tnet/mac80211/scan.c\n"
    },
    {
      "commit": "4a35ecf8bf1c4b039503fa554100fe85c761de76",
      "tree": "9b75f5d5636004d9a9aa496924377379be09aa1f",
      "parents": [
        "b4d562e3c3553ac58c7120555c4e4aefbb090a2a",
        "fb9e2d887243499b8d28efcf80821c4f6a092395"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 06 23:53:30 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 06 23:53:30 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/bonding/bond_main.c\n\tdrivers/net/via-velocity.c\n\tdrivers/net/wireless/iwlwifi/iwl-agn.c\n"
    },
    {
      "commit": "842509b8591fd9a40f5532a5f049bd29804af6d6",
      "tree": "54fdbffa504348ecf0945df67479ea01898c8ee5",
      "parents": [
        "c6537d6742985da1fbf12ae26cde6a096fd35b5c"
      ],
      "author": {
        "name": "Hagen Paul Pfeifer",
        "email": "hagen@jauu.net",
        "time": "Tue Apr 06 05:39:52 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 06 19:50:20 2010 -0700"
      },
      "message": "socket: remove duplicate declaration of struct timespec\n\nstruct timespec ts was alreay defined. Reuse the previously\ndefined one and reduce the memory footprint on the stack by\n16 bytes.\n\nSigned-off-by: Hagen Paul Pfeifer \u003chagen@jauu.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "71c5c1595c04852d6fbf3c4882b47b30b61a4d32",
      "tree": "d95c64c5b752d37e7d1235e52f0c1fceb816c2ec",
      "parents": [
        "f49c57e141c7f53353e4265a31dc2324e6215037"
      ],
      "author": {
        "name": "Brandon L Black",
        "email": "blblack@gmail.com",
        "time": "Fri Mar 26 16:18:03 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 27 08:29:01 2010 -0700"
      },
      "message": "net: Add MSG_WAITFORONE flag to recvmmsg\n\nAdd new flag MSG_WAITFORONE for the recvmmsg() syscall.\nWhen this flag is specified for a blocking socket, recvmmsg()\nwill only block until at least 1 packet is available.  The\ndefault behavior is to block until all vlen packets are\navailable.  This flag has no effect on non-blocking sockets\nor when used in combination with MSG_DONTWAIT.\n\nSigned-off-by: Brandon L Black \u003cblblack@gmail.com\u003e\nAcked-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a3a065e3f13da8a3470ed09c7f38aad256083726",
      "tree": "03e36f66709fe3d1679b0f0036f2ad3449d92dee",
      "parents": [
        "b9aff027b2c1d6019d237382c78fd396f9de2ea5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Nov 18 05:30:19 2009 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 17 10:51:40 2009 -0500"
      },
      "message": "fs: no games with DCACHE_UNHASHED\n\nFilesystems outside the regular namespace do not have to clear DCACHE_UNHASHED\nin order to have a working /proc/$pid/fd/XXX. Nothing in proc prevents the\nfd link from being used if its dentry is not in the hash.\n\nAlso, it does not get put into the dcache hash if DCACHE_UNHASHED is clear;\nthat depends on the filesystem calling d_add or d_rehash.\n\nSo delete the misleading comments and needless code.\n\nAcked-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2c48b9c45579a9b5e3e74694eebf3d2451f3dbd3",
      "tree": "cecbf786ae0650368a8136bdd90910e05d9b95c3",
      "parents": [
        "a95161aaa801c18c52b2e7cf3d6b4b141c00a20a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Aug 09 00:52:35 2009 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:42 2009 -0500"
      },
      "message": "switch alloc_file() to passing struct path\n\n... and have the caller grab both mnt and dentry; kill\nleak in infiniband, while we are at it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cc3808f8c354889982e7e323050f1e50ad99a009",
      "tree": "60c07432cf9f5d4b7bac5a07abcb6bf81aa91b7b",
      "parents": [
        "6b18662e239a032f908b7f6e164bdf7e2e0a32c9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Aug 06 09:43:59 2009 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:42 2009 -0500"
      },
      "message": "switch sock_alloc_file() to alloc_file()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7cbe66b6b53b6615f1033bd5b3dbad8162886373",
      "tree": "d7e0a229155fec3e3841d9d3272d0ae1a3a393eb",
      "parents": [
        "198de4d7ac3a0f1351c6377ff657950457ed0038"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 05 19:59:08 2009 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:41 2009 -0500"
      },
      "message": "merge sock_alloc_fd/sock_attach_fd into a new helper\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "198de4d7ac3a0f1351c6377ff657950457ed0038",
      "tree": "0451461b303cc3d4d514acadc09b8dee1a260818",
      "parents": [
        "732741274d0269718ba20c520cf72530bb038641"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 05 19:29:23 2009 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:41 2009 -0500"
      },
      "message": "reorder alloc_fd/attach_fd in socketpair()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d7256d0eb4c82b789125f610fea11c6e82b1bcff",
      "tree": "60cf4d3350f16dfaba359933aa5ed9a8e97b0533",
      "parents": [
        "810c07194f6ef541625e65b53392e9f605611a1a"
      ],
      "author": {
        "name": "Jean-Mickael Guerin",
        "email": "jean-mickael.guerin@6wind.com",
        "time": "Tue Dec 01 08:47:26 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 02 01:23:23 2009 -0800"
      },
      "message": "net: compat_mmsghdr must be used in sys_recvmmsg\n\nBoth to traverse the entries and to set the msg_len field.\n\nCommiter note: folded two patches and avoided one branch repeating the\ncompat test.\n\nSigned-off-by: Jean-Mickael Guerin \u003cjean-mickael.guerin@6wind.com\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "805003a41c035ccbe37d3d5ef5e6df8874346b5a",
      "tree": "55828a6642fc6f974842cea3387f2625ec9499b3",
      "parents": [
        "a2116ed223c88b6c424f42398e54d1607dc785ba"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Nov 11 03:45:22 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 11 19:22:23 2009 -0800"
      },
      "message": "net/atm: move all compat_ioctl handling to atm/ioctl.c\n\nWe have two implementations of the compat_ioctl handling for ATM, the\none that we have had for ages in fs/compat_ioctl.c and the one added to\nnet/atm/ioctl.c by David Woodhouse. Unfortunately, both versions are\nincomplete, and in practice we use a very confusing combination of the\ntwo.\n\nFor ioctl numbers that have the same identifier on 32 and 64 bit systems,\nwe go directly through the compat_ioctl socket operation, for those that\n\ndiffer, we do a conversion in fs/compat_ioctl.c.\n\nThis patch moves both variants into the vcc_compat_ioctl() function,\nwhile preserving the current behaviour. It also kills off the COMPATIBLE_IOCTL\ndefinitions that we never use here.\nDoing it this way is clearly not a good solution, but I hope it is a\nstep into the right direction, so that someone is able to clean up this\nmess for real.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a2116ed223c88b6c424f42398e54d1607dc785ba",
      "tree": "6a01a5d91706b4079a0db3a6d80b9ea606a954ae",
      "parents": [
        "c029f4440fd3f0dcc6923f917536fd62d6ef5d1d"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Nov 11 03:39:40 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 11 19:22:22 2009 -0800"
      },
      "message": "net/compat: fix dev_ifsioc emulation corner cases\n\nHandling for SIOCSHWTSTAMP is broken on architectures\nwith a split user/kernel address space like s390,\nbecause it passes a real user pointer while using\nset_fs(KERNEL_DS).\nA similar problem might arise the next time somebody\nadds code to dev_ifsioc.\n\nSplit up dev_ifsioc into three separate functions for\nSIOCSHWTSTAMP, SIOC*IFMAP and all other numbers so\nwe can get rid of set_fs in all potentially affected\ncases.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Patrick Ohly \u003cpatrick.ohly@intel.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7a50a240c495478179f01c9df4bd75e39cff79c7",
      "tree": "729ac5edbcf93dd4ddc502925b7fe4357a004098",
      "parents": [
        "fab2532ba50b287647d95046c4f3b37bf6379d37"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Nov 08 20:57:03 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 08 20:57:03 2009 -0800"
      },
      "message": "net/compat_ioctl: support SIOCWANDEV\n\nThis adds compat_ioctl support for SIOCWANDEV, which has\nalways been missing.\n\nThe definition of struct compat_ifreq was missing an\nifru_settings fields that is needed to support SIOCWANDEV,\nso add that and clean up the whitespace damage in the\nstruct definition.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fab2532ba50b287647d95046c4f3b37bf6379d37",
      "tree": "2fe0adee55965f6e2f6f0a4147add521e89cb098",
      "parents": [
        "f6b8f32ca71406de718391369490f6b1e81fe0bb"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Nov 08 20:56:21 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 08 20:56:21 2009 -0800"
      },
      "message": "net, compat_ioctl: fix SIOCGMII ioctls\n\nSIOCGMIIPHY and SIOCGMIIREG return data through ifreq,\nso it needs to be converted on the way out as well.\n\nSIOCGIFPFLAGS is unused, but has the same problem in theory.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9177efd3991e2cb3f5643a01d3be22121cab6efc",
      "tree": "7bc6d106d4ef26d8012346f74ae0fdbe7ebdf1d3",
      "parents": [
        "6b96018b28bd93274b4b2a4c633a5d373fda0441"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Nov 06 08:09:09 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Nov 06 23:11:15 2009 -0800"
      },
      "message": "net, compat_ioctl: handle more ioctls correctly\n\nThe MII ioctls and SIOCSIFNAME need to go through ifsioc conversion,\nwhich they never did so far. Some others are not implemented in the\nnative path, so we can just return -EINVAL directly.\n\nAdd IFSLAVE ioctls to the EINVAL list and move it to the end to\noptimize the code path for the common case.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6b96018b28bd93274b4b2a4c633a5d373fda0441",
      "tree": "dd6402a6671f1e4d3ac0b930f410e2f2a59930da",
      "parents": [
        "206602217747382488fcae68351673cc9103debc"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Nov 06 23:10:54 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Nov 06 23:10:54 2009 -0800"
      },
      "message": "compat: move sockios handling to net/socket.c\n\nThis removes the original socket compat_ioctl code\nfrom fs/compat_ioctl.c and converts the code from the copy\nin net/socket.c into a single function. We add a few cycles\nof runtime to compat_sock_ioctl() with the long switch()\nstatement, but gain some cycles in return by simplifying\nthe call chain to get there.\n\nDue to better inlining, save 1.5kb of object size in the\nprocess, and enable further savings:\n\nbefore:\n   text    data     bss     dec     hex filename\n  13540   18008    2080   33628    835c obj/fs/compat_ioctl.o\n  14565     636      40   15241    3b89 obj/net/socket.o\n\nafter:\n   text    data     bss     dec     hex filename\n   8916   15176    2080   26172    663c obj/fs/compat_ioctl.o\n  20725     636      40   21401    5399 obj/net/socket.o\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7a229387d317df525ebd19e146493db7f2694b8b",
      "tree": "bb3c730da54ca7bdc5f731a96eeb1caf17a5801b",
      "parents": [
        "9646e7ce3d1955478aa0573b36c151ab4b649486"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Nov 06 23:00:29 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Nov 06 23:00:29 2009 -0800"
      },
      "message": "net: copy socket ioctl code to net/socket.h\n\nThis makes an identical copy of the socket compat_ioctl code\nfrom fs/compat_ioctl.c to net/socket.c, as a preparation\nfor moving the functionality in a way that can be easily\nreviewed.\n\nThe code is hidden inside of #if 0 and gets activated in the\npatch that will make it work.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3f378b684453f2a028eda463ce383370545d9cc9",
      "tree": "dc50d087e137c6d173e25ae10ecd0f10823eca7a",
      "parents": [
        "13f18aa05f5abe135f47b6417537ae2b2fedc18c"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Nov 05 22:18:14 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 05 22:18:14 2009 -0800"
      },
      "message": "net: pass kern to net_proto_family create function\n\nThe generic __sock_create function has a kern argument which allows the\nsecurity system to make decisions based on if a socket is being created by\nthe kernel or by userspace.  This patch passes that flag to the\nnet_proto_family specific create function, so it can do the same thing.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a2e2725541fad72416326798c2d7fa4dafb7d337",
      "tree": "6174be11da607e83eb8efb3775114ad4d6e0ca3a",
      "parents": [
        "c05e85a06e376f6b6d59e71e5333d707e956d78b"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Mon Oct 12 23:40:10 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 12 23:40:10 2009 -0700"
      },
      "message": "net: Introduce recvmmsg socket syscall\n\nMeaning receive multiple messages, reducing the number of syscalls and\nnet stack entry/exit operations.\n\nNext patches will introduce mechanisms where protocols that want to\noptimize this operation will provide an unlocked_recvmsg operation.\n\nThis takes into account comments made by:\n\n. Paul Moore: sock_recvmsg is called only for the first datagram,\n  sock_recvmsg_nosec is used for the rest.\n\n. Caitlin Bestler: recvmmsg now has a struct timespec timeout, that\n  works in the same fashion as the ppoll one.\n\n  If the underlying protocol returns a datagram with MSG_OOB set, this\n  will make recvmmsg return right away with as many datagrams (+ the OOB\n  one) it has received so far.\n\n. Rémi Denis-Courmont \u0026 Steven Whitehouse: If we receive N \u003c vlen\n  datagrams and then recvmsg returns an error, recvmmsg will return\n  the successfully received datagrams, store the error and return it\n  in the next call.\n\nThis paves the way for a subsequent optimization, sk_prot-\u003eunlocked_recvmsg,\nwhere we will be able to acquire the lock only at batch start and end, not at\nevery underlying recvmsg call.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3b885787ea4112eaa80945999ea0901bf742707f",
      "tree": "06fc15f8e8083d5652ccb4d06653d9812dce9c0b",
      "parents": [
        "d5e63bded6e819ca77ee1a1d97c783a31f6caf30"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Mon Oct 12 13:26:31 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 12 13:26:31 2009 -0700"
      },
      "message": "net: Generalize socket rx gap / receive queue overflow cmsg\n\nCreate a new socket level option to report number of queue overflows\n\nRecently I augmented the AF_PACKET protocol to report the number of frames lost\non the socket receive queue between any two enqueued frames.  This value was\nexported via a SOL_PACKET level cmsg.  AFter I completed that work it was\nrequested that this feature be generalized so that any datagram oriented socket\ncould make use of this option.  As such I\u0027ve created this patch, It creates a\nnew SOL_SOCKET level option called SO_RXQ_OVFL, which when enabled exports a\nSOL_SOCKET level cmsg that reports the nubmer of times the sk_receive_queue\noverflowed between any two given frames.  It also augments the AF_PACKET\nprotocol to take advantage of this new feature (as it previously did not touch\nsk-\u003esk_drops, which this patch uses to record the overflow count).  Tested\nsuccessfully by me.\n\nNotes:\n\n1) Unlike my previous patch, this patch simply records the sk_drops value, which\nis not a number of drops between packets, but rather a total number of drops.\nDeltas must be computed in user space.\n\n2) While this patch currently works with datagram oriented protocols, it will\nalso be accepted by non-datagram oriented protocols. I\u0027m not sure if thats\nagreeable to everyone, but my argument in favor of doing so is that, for those\nprotocols which aren\u0027t applicable to this option, sk_drops will always be zero,\nand reporting no drops on a receive queue that isn\u0027t used for those\nnon-participating protocols seems reasonable to me.  This also saves us having\nto code in a per-protocol opt in mechanism.\n\n3) This applies cleanly to net-next assuming that commit\n977750076d98c7ff6cbda51858bb5a5894a9d9ab (my af packet cmsg patch) is reverted\n\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8aa0f64ac3835a6daf84d0b0e07c4c01d7d8eddc",
      "tree": "e5e6cc8637a44354997624f26d4d55834c9915b4",
      "parents": [
        "cd7e1f0b056c071860db65c847a854b3093d6606",
        "eab2ec83dbf0e32e28f3108f302ffdaa225d4cce"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 09 14:40:09 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 09 14:40:09 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6\n"
    },
    {
      "commit": "3d23e349d807177eaf519d444677cee86b1a04cf",
      "tree": "e800dee247598e59185ddd2dd47d2ac6fe090b9c",
      "parents": [
        "bc974f4a230756faf4f69114f271de2e678b363b"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Sep 29 23:27:28 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Oct 07 16:39:43 2009 -0400"
      },
      "message": "wext: refactor\n\nRefactor wext to\n * split out iwpriv handling\n * split out iwspy handling\n * split out procfs support\n * allow cfg80211 to have wireless extensions compat code\n   w/o CONFIG_WIRELESS_EXT\n\nAfter this, drivers need to\n - select WIRELESS_EXT\t- for wext support\n - select WEXT_PRIV\t- for iwpriv support\n - select WEXT_SPY\t- for iwspy support\n\nexcept cfg80211 -- which gets new hooks in wext-core.c\nand can then get wext handlers without CONFIG_WIRELESS_EXT.\n\nWireless extensions procfs support is auto-selected\nbased on PROC_FS and anything that requires the wext core\n(i.e. WIRELESS_EXT or CFG80211_WEXT).\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "bcdce7195e0eab55b37dbd53be53057f38006380",
      "tree": "b4480a2e43561adf2060d1b8da818535cc91dc04",
      "parents": [
        "bd32cafc4707ccc1e66fafdb47fac42217569070"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Oct 06 17:28:29 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 06 17:28:29 2009 -0700"
      },
      "message": "net: speedup sk_wake_async()\n\nAn incoming datagram must bring into cpu cache *lot* of cache lines,\nin particular : (other parts omitted (hash chains, ip route cache...))\n\nOn 32bit arches :\n\noffsetof(struct sock, sk_rcvbuf)       \u003d0x30    (read)\noffsetof(struct sock, sk_lock)         \u003d0x34   (rw)\n\noffsetof(struct sock, sk_sleep)        \u003d0x50 (read)\noffsetof(struct sock, sk_rmem_alloc)   \u003d0x64   (rw)\noffsetof(struct sock, sk_receive_queue)\u003d0x74   (rw)\n\noffsetof(struct sock, sk_forward_alloc)\u003d0x98   (rw)\n\noffsetof(struct sock, sk_callback_lock)\u003d0xcc    (rw)\noffsetof(struct sock, sk_drops)        \u003d0xd8 (read if we add dropcount support, rw if frame dropped)\noffsetof(struct sock, sk_filter)       \u003d0xf8    (read)\n\noffsetof(struct sock, sk_socket)       \u003d0x138 (read)\n\noffsetof(struct sock, sk_data_ready)   \u003d0x15c   (read)\n\n\nWe can avoid sk-\u003esk_socket and socket-\u003efasync_list referencing on sockets\nwith no fasync() structures. (socket-\u003efasync_list ptr is probably already in cache\nbecause it shares a cache line with socket-\u003ewait, ie location pointed by sk-\u003esk_sleep)\n\nThis avoids one cache line load per incoming packet for common cases (no fasync())\n\nWe can leave (or even move in a future patch) sk-\u003esk_socket in a cold location\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b7058842c940ad2c08dd829b21e5c92ebe3b8758",
      "tree": "5fe78d599fc345ca0bcd4b083b79095a54b2921b",
      "parents": [
        "eb1cf0f8f7a9e5a6d573d5bd72c015686a042db0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 30 16:12:20 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 30 16:12:20 2009 -0700"
      },
      "message": "net: Make setsockopt() optlen be unsigned.\n\nThis provides safety against negative optlen at the type\nlevel instead of depending upon (sometimes non-trivial)\nchecks against this sprinkled all over the the place, in\neach and every implementation.\n\nBased upon work done by Arjan van de Ven and feedback\nfrom Linus Torvalds.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "47379052b5c87707bc6e20a2a4f6ac156fb8357c",
      "tree": "178c84b77edbc7cac3223cbe930bd5927a4bf86f",
      "parents": [
        "30df94f800368a016d09ee672c9fcc20751d0260"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Sep 28 12:57:44 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 28 12:57:44 2009 -0700"
      },
      "message": "net: Add explicit bound checks in net/socket.c\n\nThe sys_socketcall() function has a very clever system for the copy\nsize of its arguments. Unfortunately, gcc cannot deal with this in\nterms of proving that the copy_from_user() is then always in bounds.\nThis is the last (well 9th of this series, but last in the kernel) such\ncase around.\n\nWith this patch, we can turn on code to make having the boundary provably\nright for the whole kernel, and detect introduction of new security\naccidents of this type early on.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1fd7317d02ec03c6fdf072317841287933d06d24",
      "tree": "b7ac4d511896dbb21c1b76a27f6c4d5b4cb6c7bb",
      "parents": [
        "af91322ef3f29ae4114e736e2a72e28b4d619cf9"
      ],
      "author": {
        "name": "Nick Black",
        "email": "dank@qemfd.net",
        "time": "Tue Sep 22 16:43:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:28 2009 -0700"
      },
      "message": "Move magic numbers into magic.h\n\nMove various magic-number definitions into magic.h.\n\nSigned-off-by: Nick Black \u003cdank@qemfd.net\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b87221de6a4934eda856475a0065688d12973a04",
      "tree": "6bcf0628e106c4833538f4c23d710fbbe3d7609a",
      "parents": [
        "0d54b217a247f39605361f867fefbb9e099a5432"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining super_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29a020d35f629619c67fa5e32acaaac3f8a1ba90",
      "tree": "65f9ce8a822633aa1e6cdf25be3aa258d2d21db1",
      "parents": [
        "75c78500ddad74b229cd0691496b8549490496a2"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Sep 15 02:39:20 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 15 02:39:20 2009 -0700"
      },
      "message": "[PATCH] net: kmemcheck annotation in struct socket\n\nstruct socket has a 16 bit hole that triggers kmemcheck warnings.\n\nAs suggested by Ingo, use kmemcheck annotations\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e694958388c50148389b0e9b9e9e8945cf0f1b98",
      "tree": "492a61009732cd0c468d4c0faa41321414ea43a7",
      "parents": [
        "a3620f7545344f932873bf98fbdf416b49409c8e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 13 08:28:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 13 10:57:26 2009 -0700"
      },
      "message": "Make sock_sendpage() use kernel_sendpage()\n\nkernel_sendpage() does the proper default case handling for when the\nsocket doesn\u0027t have a native sendpage implementation.\n\nNow, arguably this might be something that we could instead solve by\njust specifying that all protocols should do it themselves at the\nprotocol level, but we really only care about the common protocols.\nDoes anybody really care about sendpage on something like Appletalk? Not\nlikely.\n\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Julien TINNES \u003cjulien@cr0.org\u003e\nAcked-by: Tavis Ormandy \u003ctaviso@sdf.lonestar.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3989203290fba6fdf6bc4825fbf6526e1bf17977",
      "tree": "2fb2012e6136d3b8acbf10eaee6dce95afc6f781",
      "parents": [
        "d508afb437daee7cf07da085b635c44a4ebf9b38",
        "37efa239901493694a48f1d6f59f8de17c2c4509"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 18:05:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 18:05:43 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:\n  b44: Use kernel DMA addresses for the kernel DMA API\n  forcedeth: Fix resume from hibernation regression.\n  xfrm: fix fragmentation on inter family tunnels\n  ibm_newemac: Fix dangerous struct assumption\n  gigaset: documentation update\n  gigaset: in file ops, check for device disconnect before anything else\n  bas_gigaset: use tasklet_hi_schedule for timing critical tasklets\n  net/802/fddi.c: add MODULE_LICENSE\n  smsc911x: remove unused #include \u003clinux/version.h\u003e\n  axnet_cs: fix phy_id detection for bogus Asix chip.\n  bnx2: Use request_firmware()\n  b44: Fix sizes passed to b44_sync_dma_desc_for_{device,cpu}()\n  socket: use percpu_add() while updating sockets_in_use\n  virtio_net: Set the mac config only when VIRITO_NET_F_MAC\n  myri_sbus: use request_firmware\n  e1000: fix loss of multicast packets\n  vxge: should include tcp.h\n\nConflict in firmware/WHENCE (SCSI vs net firmware)\n"
    },
    {
      "commit": "4e69489a0ac11a9b62a25923975bfc370a30eae5",
      "tree": "bdb97a2cd101820d62f580722833aad3b2600f4b",
      "parents": [
        "62994b2d6beb5f7c59a25bf77e01f191acf74ea2"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sat Apr 04 16:41:09 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 04 16:41:09 2009 -0700"
      },
      "message": "socket: use percpu_add() while updating sockets_in_use\n\nsock_alloc() currently uses following code to update sockets_in_use\n\nget_cpu_var(sockets_in_use)++;\nput_cpu_var(sockets_in_use);\n\nThis translates to :\n\nc0436274:       b8 01 00 00 00          mov    $0x1,%eax\nc0436279:       e8 42 40 df ff          call   c022a2c0 \u003cadd_preempt_count\u003e\nc043627e:       bb 20 4f 6a c0          mov    $0xc06a4f20,%ebx\nc0436283:       e8 18 ca f0 ff          call   c0342ca0 \u003cdebug_smp_processor_id\u003e\nc0436288:       03 1c 85 60 4a 65 c0    add    -0x3f9ab5a0(,%eax,4),%ebx\nc043628f:       ff 03                   incl   (%ebx)\nc0436291:       b8 01 00 00 00          mov    $0x1,%eax\nc0436296:       e8 75 3f df ff          call   c022a210 \u003csub_preempt_count\u003e\nc043629b:       89 e0                   mov    %esp,%eax\nc043629d:       25 00 e0 ff ff          and    $0xffffe000,%eax\nc04362a2:       f6 40 08 08             testb  $0x8,0x8(%eax)\nc04362a6:       75 07                   jne    c04362af \u003csock_alloc+0x7f\u003e\nc04362a8:       8d 46 d8                lea    -0x28(%esi),%eax\nc04362ab:       5b                      pop    %ebx\nc04362ac:       5e                      pop    %esi\nc04362ad:       c9                      leave\nc04362ae:       c3                      ret\nc04362af:       e8 cc 5d 09 00          call   c04cc080 \u003cpreempt_schedule\u003e\nc04362b4:       8d 74 26 00             lea    0x0(%esi,%eiz,1),%esi\nc04362b8:       eb ee                   jmp    c04362a8 \u003csock_alloc+0x78\u003e\n\nWhile percpu_add(sockets_in_use, 1) translates to a single instruction :\n\nc0436275:   64 83 05 20 5f 6a c0    addl   $0x1,%fs:0xc06a5f20\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8651d5c0b1f874c5b8307ae2b858bc40f9f02482",
      "tree": "c09bee8fdc4c659d155b47911dc87ce4c09b6676",
      "parents": [
        "58bfbb51ff2b0fdc6c732ff3d72f50aa632b67a2"
      ],
      "author": {
        "name": "Paul Moore",
        "email": "paul.moore@hp.com",
        "time": "Fri Mar 27 17:10:48 2009 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Sat Mar 28 15:01:37 2009 +1100"
      },
      "message": "lsm: Remove the socket_post_accept() hook\n\nThe socket_post_accept() hook is not currently used by any in-tree modules\nand its existence continues to cause problems by confusing people about\nwhat can be safely accomplished using this hook.  If a legitimate need for\nthis hook arises in the future it can always be reintroduced.\n\nSigned-off-by: Paul Moore \u003cpaul.moore@hp.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "3ae5080f4c2e293229508dabe7c8a90af4e4c460",
      "tree": "9cb11f26905a82b7fac9d3b8f9d61d58bc5c94b0",
      "parents": [
        "2c9e15a011c55ff96b2b8d2b126d1b9a96abba20",
        "aabb8fdb41128705fd1627f56fdd571e45fdbcdb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 16:23:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 16:23:12 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (37 commits)\n  fs: avoid I_NEW inodes\n  Merge code for single and multiple-instance mounts\n  Remove get_init_pts_sb()\n  Move common mknod_ptmx() calls into caller\n  Parse mount options just once and copy them to super block\n  Unroll essentials of do_remount_sb() into devpts\n  vfs: simple_set_mnt() should return void\n  fs: move bdev code out of buffer.c\n  constify dentry_operations: rest\n  constify dentry_operations: configfs\n  constify dentry_operations: sysfs\n  constify dentry_operations: JFS\n  constify dentry_operations: OCFS2\n  constify dentry_operations: GFS2\n  constify dentry_operations: FAT\n  constify dentry_operations: FUSE\n  constify dentry_operations: procfs\n  constify dentry_operations: ecryptfs\n  constify dentry_operations: CIFS\n  constify dentry_operations: AFS\n  ...\n"
    },
    {
      "commit": "3ba13d179e8c24c68eac32b93593a6b10fcd1572",
      "tree": "732162ba9ddfe66c8e892a25765cb30f0807cf31",
      "parents": [
        "296c2d86635bd6ecd8f282dfff18bb68fb4fc512"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 06:02:22 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:03 2009 -0400"
      },
      "message": "constify dentry_operations: rest\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8e9d2089723d08d51e66c5eea49253d76e27941e",
      "tree": "cf15609d5eeb0c1f3a39231d8ce793d3c8ad0ed0",
      "parents": [
        "ba1eb95cf3cc666769afe42eaa15a3a34ae82f94",
        "60aa49243d09afc873f082567d2e3c16634ced84"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 16:14:02 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 16:14:02 2009 -0700"
      },
      "message": "Merge branch \u0027bkl-removal\u0027 of git://git.lwn.net/linux-2.6\n\n* \u0027bkl-removal\u0027 of git://git.lwn.net/linux-2.6:\n  Rationalize fasync return values\n  Move FASYNC bit handling to f_op-\u003efasync()\n  Use f_lock to protect f_flags\n  Rename struct file-\u003ef_ep_lock\n"
    },
    {
      "commit": "76398425bb06b07cc3a3b1ce169c67dc9d6874ed",
      "tree": "e6e1800edda88b5592617a950daacf2199587a33",
      "parents": [
        "db1dd4d376134eba0e08af523b61cc566a4ea1cd"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Sun Feb 01 14:26:59 2009 -0700"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Mon Mar 16 08:32:27 2009 -0600"
      },
      "message": "Move FASYNC bit handling to f_op-\u003efasync()\n\nRemoving the BKL from FASYNC handling ran into the challenge of keeping the\nsetting of the FASYNC bit in filp-\u003ef_flags atomic with regard to calls to\nthe underlying fasync() function.  Andi Kleen suggested moving the handling\nof that bit into fasync(); this patch does exactly that.  As a result, we\nhave a couple of internal API changes: fasync() must now manage the FASYNC\nbit, and it will be called without the BKL held.\n\nAs it happens, every fasync() implementation in the kernel with one\nexception calls fasync_helper().  So, if we make fasync_helper() set the\nFASYNC bit, we can avoid making any changes to the other fasync()\nfunctions - as long as those functions, themselves, have proper locking.\nMost fasync() implementations do nothing but call fasync_helper() - which\nhas its own lock - so they are easily verified as correct.  The BKL had\nalready been pushed down into the rest.\n\nThe networking code has its own version of fasync_helper(), so that code\nhas been augmented with explicit FASYNC bit handling.\n\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\n"
    },
    {
      "commit": "20d4947353be60e909e6b1a79d241457edd6833f",
      "tree": "939ced518fc52e57df9ee9efb0cd14b6e26a3bc4",
      "parents": [
        "ac45f602ee3d1b6f326f68bc0c2591ceebf05ba4"
      ],
      "author": {
        "name": "Patrick Ohly",
        "email": "patrick.ohly@intel.com",
        "time": "Thu Feb 12 05:03:38 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 15 22:43:35 2009 -0800"
      },
      "message": "net: socket infrastructure for SO_TIMESTAMPING\n\nThe overlap with the old SO_TIMESTAMP[NS] options is handled so\nthat time stamping in software (net_enable_timestamp()) is\nenabled when SO_TIMESTAMP[NS] and/or SO_TIMESTAMPING_RX_SOFTWARE\nis set.  It\u0027s disabled if all of these are off.\n\nSigned-off-by: Patrick Ohly \u003cpatrick.ohly@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3e0fa65f8ba4fd24b3dcfaf14d5b15eaab0fdc61",
      "tree": "1dbfc51d98988dcfba9f55ca6e0ada4e8af50f7c",
      "parents": [
        "20f37034fb966a1c35894f9fe529fda0b6440101"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:24 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:27 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 22\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "20f37034fb966a1c35894f9fe529fda0b6440101",
      "tree": "5394f0a3e4046567fb9b271ee1834aaff09467eb",
      "parents": [
        "3cdad42884bbd95d5aa01297e8236ea1bad70053"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:23 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:26 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 21\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "754fe8d297bfae7b77f7ce866e2fb0c5fb186506",
      "tree": "b2650f728d50791fa86ecd8c49806f51db714bd4",
      "parents": [
        "5add95d4f7cf08f6f62510f19576992912387501"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:09 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:20 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 07\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "157cf649a735a2f7e8dba0ed08e6e38b6c30d886",
      "tree": "85895367c24023d363d5ee7b5ed2fb16eaf08721",
      "parents": [
        "564f6993ffef656aebaf46cf2f1f6cb4f5c97207"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Dec 14 04:57:47 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:41 2009 -0500"
      },
      "message": "sanitize audit_fd_pair()\n\n* no allocations\n* return void\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f3298dc4f2277874d40cb4fc3a6e277317d6603b",
      "tree": "8ba8f7e7a0597965b2f6c7106718a59cc164eab1",
      "parents": [
        "4f6b434fee2402b3decdeae9d16eb648725ae426"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 10 03:16:51 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:39 2009 -0500"
      },
      "message": "sanitize audit_socketcall\n\n* don\u0027t bother with allocations\n* now that it can\u0027t fail, make it return void\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0191b625ca5a46206d2fb862bb08f36f2fcb3b31",
      "tree": "454d1842b1833d976da62abcbd5c47521ebe9bd7",
      "parents": [
        "54a696bd07c14d3b1192d03ce7269bc59b45209a",
        "eb56092fc168bf5af199d47af50c0d84a96db898"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 28 12:49:40 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 28 12:49:40 2008 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1429 commits)\n  net: Allow dependancies of FDDI \u0026 Tokenring to be modular.\n  igb: Fix build warning when DCA is disabled.\n  net: Fix warning fallout from recent NAPI interface changes.\n  gro: Fix potential use after free\n  sfc: If AN is enabled, always read speed/duplex from the AN advertising bits\n  sfc: When disabling the NIC, close the device rather than unregistering it\n  sfc: SFT9001: Add cable diagnostics\n  sfc: Add support for multiple PHY self-tests\n  sfc: Merge top-level functions for self-tests\n  sfc: Clean up PHY mode management in loopback self-test\n  sfc: Fix unreliable link detection in some loopback modes\n  sfc: Generate unique names for per-NIC workqueues\n  802.3ad: use standard ethhdr instead of ad_header\n  802.3ad: generalize out mac address initializer\n  802.3ad: initialize ports LACPDU from const initializer\n  802.3ad: remove typedef around ad_system\n  802.3ad: turn ports is_individual into a bool\n  802.3ad: turn ports is_enabled into a bool\n  802.3ad: make ntt bool\n  ixgbe: Fix set_ringparam in ixgbe to use the same memory pools.\n  ...\n\nFixed trivial IPv4/6 address printing conflicts in fs/cifs/connect.c due\nto the conversion to %pI (in this networking merge) and the addition of\ndoing IPv6 addresses (from the earlier merge of CIFS).\n"
    },
    {
      "commit": "cbacc2c7f066a1e01b33b0e27ae5efbf534bc2db",
      "tree": "90d1093131d2a3543a8b3b1f3364e7c6f4081a93",
      "parents": [
        "4a6908a3a050aacc9c3a2f36b276b46c0629ad91",
        "74192246910ff4fb95309ba1a683215644beeb62"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 25 11:40:09 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 25 11:40:09 2008 +1100"
      },
      "message": "Merge branch \u0027next\u0027 into for-linus\n"
    },
    {
      "commit": "6332178d91ca1a9dbd99bd97cabbcf965d178e9f",
      "tree": "d98af2cbc7ff0e9e4d00b6cc8c79b05ca7815a5f",
      "parents": [
        "908a7a16b852ffd618a9127be8d62432182d81b4",
        "739840d529eb7505d3cbfe9d468bf1440c9a8e27"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 23 17:56:23 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 23 17:56:23 2008 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/ppp_generic.c\n"
    },
    {
      "commit": "1b08534e562dae7b084326f8aa8cc12a4c1b6593",
      "tree": "9fcc3093d7002015d334a28b0b0e21527ed5dcf7",
      "parents": [
        "3298a7388c00227e736d1037328788073c80c7b4"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Thu Dec 18 19:35:10 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 18 19:35:10 2008 -0800"
      },
      "message": "net: Fix module refcount leak in kernel_accept()\n\nThe kernel_accept() does not hold the module refcount of newsock-\u003eops-\u003eowner,\nso we need __module_get(newsock-\u003eops-\u003eowner) code after call kernel_accept()\nby hand.\nIn sunrpc, the module refcount is missing to hold. So this cause kernel panic.\n\nUsed following script to reproduct:\n\nwhile [ 1 ];\ndo\n    mount -t nfs4 192.168.0.19:/ /mnt\n    touch /mnt/file\n    umount /mnt\n    lsmod | grep ipv6\ndone\n\nThis patch fixed the problem by add __module_get(newsock-\u003eops-\u003eowner) to\nkernel_accept(). So we do not need to used __module_get(newsock-\u003eops-\u003eowner)\nin every place when used kernel_accept().\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ec98ce480ada787f2cfbd696980ff3564415505b",
      "tree": "1a4d644b38f9f1e4b4e086fde0b195df4a92cf84",
      "parents": [
        "3496f92beb9aa99ef21fccc154a36c7698e9c538",
        "feaf3848a813a106f163013af6fcf6c4bfec92d9"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 04 17:16:36 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 04 17:16:36 2008 +1100"
      },
      "message": "Merge branch \u0027master\u0027 into next\n\nConflicts:\n\tfs/nfsd/nfs4recover.c\n\nManually fixed above to use new creds API functions, e.g.\nnfs4_save_creds().\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "6ab33d51713d6d60c7677c0d020910a8cb37e513",
      "tree": "546c2ff099b2757e75cf34ddace874f1220f740e",
      "parents": [
        "7be6065b39c3f1cfa796667eac1a2170465acc91",
        "13d428afc007fcfcd6deeb215618f54cf9c0cae6"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 20 16:44:00 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 20 16:44:00 2008 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/ixgbe/ixgbe_main.c\n\tinclude/net/mac80211.h\n\tnet/phonet/af_phonet.c\n"
    },
    {
      "commit": "de11defebf00007677fb7ee91d9b089b78786fbb",
      "tree": "8219faf1b7992be77a612e778c2573c55f56cf19",
      "parents": [
        "cf7ee554f3a324e98181b0ea249d9d5be3a0acb8"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Nov 19 15:36:14 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:57 2008 -0800"
      },
      "message": "reintroduce accept4\n\nIntroduce a new accept4() system call.  The addition of this system call\nmatches analogous changes in 2.6.27 (dup3(), evenfd2(), signalfd4(),\ninotify_init1(), epoll_create1(), pipe2()) which added new system calls\nthat differed from analogous traditional system calls in adding a flags\nargument that can be used to access additional functionality.\n\nThe accept4() system call is exactly the same as accept(), except that\nit adds a flags bit-mask argument.  Two flags are initially implemented.\n(Most of the new system calls in 2.6.27 also had both of these flags.)\n\nSOCK_CLOEXEC causes the close-on-exec (FD_CLOEXEC) flag to be enabled\nfor the new file descriptor returned by accept4().  This is a useful\nsecurity feature to avoid leaking information in a multithreaded\nprogram where one thread is doing an accept() at the same time as\nanother thread is doing a fork() plus exec().  More details here:\nhttp://udrepper.livejournal.com/20407.html \"Secure File Descriptor Handling\",\nUlrich Drepper).\n\nThe other flag is SOCK_NONBLOCK, which causes the O_NONBLOCK flag\nto be enabled on the new open file description created by accept4().\n(This flag is merely a convenience, saving the use of additional calls\nfcntl(F_GETFL) and fcntl (F_SETFL) to achieve the same result.\n\nHere\u0027s a test program.  Works on x86-32.  Should work on x86-64, but\nI (mtk) don\u0027t have a system to hand to test with.\n\nIt tests accept4() with each of the four possible combinations of\nSOCK_CLOEXEC and SOCK_NONBLOCK set/clear in \u0027flags\u0027, and verifies\nthat the appropriate flags are set on the file descriptor/open file\ndescription returned by accept4().\n\nI tested Ulrich\u0027s patch in this thread by applying against 2.6.28-rc2,\nand it passes according to my test program.\n\n/* test_accept4.c\n\n  Copyright (C) 2008, Linux Foundation, written by Michael Kerrisk\n       \u003cmtk.manpages@gmail.com\u003e\n\n  Licensed under the GNU GPLv2 or later.\n*/\n#define _GNU_SOURCE\n#include \u003cunistd.h\u003e\n#include \u003csys/syscall.h\u003e\n#include \u003csys/socket.h\u003e\n#include \u003cnetinet/in.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstring.h\u003e\n\n#define PORT_NUM 33333\n\n#define die(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0)\n\n/**********************************************************************/\n\n/* The following is what we need until glibc gets a wrapper for\n  accept4() */\n\n/* Flags for socket(), socketpair(), accept4() */\n#ifndef SOCK_CLOEXEC\n#define SOCK_CLOEXEC    O_CLOEXEC\n#endif\n#ifndef SOCK_NONBLOCK\n#define SOCK_NONBLOCK   O_NONBLOCK\n#endif\n\n#ifdef __x86_64__\n#define SYS_accept4 288\n#elif __i386__\n#define USE_SOCKETCALL 1\n#define SYS_ACCEPT4 18\n#else\n#error \"Sorry -- don\u0027t know the syscall # on this architecture\"\n#endif\n\nstatic int\naccept4(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags)\n{\n   printf(\"Calling accept4(): flags \u003d %x\", flags);\n   if (flags !\u003d 0) {\n       printf(\" (\");\n       if (flags \u0026 SOCK_CLOEXEC)\n           printf(\"SOCK_CLOEXEC\");\n       if ((flags \u0026 SOCK_CLOEXEC) \u0026\u0026 (flags \u0026 SOCK_NONBLOCK))\n           printf(\" \");\n       if (flags \u0026 SOCK_NONBLOCK)\n           printf(\"SOCK_NONBLOCK\");\n       printf(\")\");\n   }\n   printf(\"\\n\");\n\n#if USE_SOCKETCALL\n   long args[6];\n\n   args[0] \u003d fd;\n   args[1] \u003d (long) sockaddr;\n   args[2] \u003d (long) addrlen;\n   args[3] \u003d flags;\n\n   return syscall(SYS_socketcall, SYS_ACCEPT4, args);\n#else\n   return syscall(SYS_accept4, fd, sockaddr, addrlen, flags);\n#endif\n}\n\n/**********************************************************************/\n\nstatic int\ndo_test(int lfd, struct sockaddr_in *conn_addr,\n       int closeonexec_flag, int nonblock_flag)\n{\n   int connfd, acceptfd;\n   int fdf, flf, fdf_pass, flf_pass;\n   struct sockaddr_in claddr;\n   socklen_t addrlen;\n\n   printf(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\\n\");\n\n   connfd \u003d socket(AF_INET, SOCK_STREAM, 0);\n   if (connfd \u003d\u003d -1)\n       die(\"socket\");\n   if (connect(connfd, (struct sockaddr *) conn_addr,\n               sizeof(struct sockaddr_in)) \u003d\u003d -1)\n       die(\"connect\");\n\n   addrlen \u003d sizeof(struct sockaddr_in);\n   acceptfd \u003d accept4(lfd, (struct sockaddr *) \u0026claddr, \u0026addrlen,\n                      closeonexec_flag | nonblock_flag);\n   if (acceptfd \u003d\u003d -1) {\n       perror(\"accept4()\");\n       close(connfd);\n       return 0;\n   }\n\n   fdf \u003d fcntl(acceptfd, F_GETFD);\n   if (fdf \u003d\u003d -1)\n       die(\"fcntl:F_GETFD\");\n   fdf_pass \u003d ((fdf \u0026 FD_CLOEXEC) !\u003d 0) \u003d\u003d\n              ((closeonexec_flag \u0026 SOCK_CLOEXEC) !\u003d 0);\n   printf(\"Close-on-exec flag is %sset (%s); \",\n           (fdf \u0026 FD_CLOEXEC) ? \"\" : \"not \",\n           fdf_pass ? \"OK\" : \"failed\");\n\n   flf \u003d fcntl(acceptfd, F_GETFL);\n   if (flf \u003d\u003d -1)\n       die(\"fcntl:F_GETFD\");\n   flf_pass \u003d ((flf \u0026 O_NONBLOCK) !\u003d 0) \u003d\u003d\n              ((nonblock_flag \u0026 SOCK_NONBLOCK) !\u003d0);\n   printf(\"nonblock flag is %sset (%s)\\n\",\n           (flf \u0026 O_NONBLOCK) ? \"\" : \"not \",\n           flf_pass ? \"OK\" : \"failed\");\n\n   close(acceptfd);\n   close(connfd);\n\n   printf(\"Test result: %s\\n\", (fdf_pass \u0026\u0026 flf_pass) ? \"PASS\" : \"FAIL\");\n   return fdf_pass \u0026\u0026 flf_pass;\n}\n\nstatic int\ncreate_listening_socket(int port_num)\n{\n   struct sockaddr_in svaddr;\n   int lfd;\n   int optval;\n\n   memset(\u0026svaddr, 0, sizeof(struct sockaddr_in));\n   svaddr.sin_family \u003d AF_INET;\n   svaddr.sin_addr.s_addr \u003d htonl(INADDR_ANY);\n   svaddr.sin_port \u003d htons(port_num);\n\n   lfd \u003d socket(AF_INET, SOCK_STREAM, 0);\n   if (lfd \u003d\u003d -1)\n       die(\"socket\");\n\n   optval \u003d 1;\n   if (setsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, \u0026optval,\n                  sizeof(optval)) \u003d\u003d -1)\n       die(\"setsockopt\");\n\n   if (bind(lfd, (struct sockaddr *) \u0026svaddr,\n            sizeof(struct sockaddr_in)) \u003d\u003d -1)\n       die(\"bind\");\n\n   if (listen(lfd, 5) \u003d\u003d -1)\n       die(\"listen\");\n\n   return lfd;\n}\n\nint\nmain(int argc, char *argv[])\n{\n   struct sockaddr_in conn_addr;\n   int lfd;\n   int port_num;\n   int passed;\n\n   passed \u003d 1;\n\n   port_num \u003d (argc \u003e 1) ? atoi(argv[1]) : PORT_NUM;\n\n   memset(\u0026conn_addr, 0, sizeof(struct sockaddr_in));\n   conn_addr.sin_family \u003d AF_INET;\n   conn_addr.sin_addr.s_addr \u003d htonl(INADDR_LOOPBACK);\n   conn_addr.sin_port \u003d htons(port_num);\n\n   lfd \u003d create_listening_socket(port_num);\n\n   if (!do_test(lfd, \u0026conn_addr, 0, 0))\n       passed \u003d 0;\n   if (!do_test(lfd, \u0026conn_addr, SOCK_CLOEXEC, 0))\n       passed \u003d 0;\n   if (!do_test(lfd, \u0026conn_addr, 0, SOCK_NONBLOCK))\n       passed \u003d 0;\n   if (!do_test(lfd, \u0026conn_addr, SOCK_CLOEXEC, SOCK_NONBLOCK))\n       passed \u003d 0;\n\n   close(lfd);\n\n   exit(passed ? EXIT_SUCCESS : EXIT_FAILURE);\n}\n\n[mtk.manpages@gmail.com: rewrote changelog, updated test program]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nTested-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nAcked-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8192b0c482d7078fcdcb4854341b977426f6f09b",
      "tree": "6ab545ac9adff7fdc994c7b120b1c9d0915dd62e",
      "parents": [
        "19d65624d38d6296dddf725d1b03baa8a491a553"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:10 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:10 2008 +1100"
      },
      "message": "CRED: Wrap task credential accesses in the networking subsystem\n\nWrap access to task credentials so that they can be separated more easily from\nthe task_struct during the introduction of COW creds.\n\nChange most current-\u003e(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().\n\nChange some task-\u003ee?[ug]id to task_e?[ug]id().  In some places it makes more\nsense to use RCU directly rather than a convenient wrapper; these will be\naddressed by later patches.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: netdev@vger.kernel.org\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "9eeda9abd1faf489f3df9a1f557975f4c8650363",
      "tree": "3e0a58e25b776cfbee193195460324dccb1886c7",
      "parents": [
        "61c9eaf90081cbe6dc4f389e0056bff76eca19ec",
        "4bab0ea1d42dd1927af9df6fbf0003fc00617c50"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 06 22:43:03 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 06 22:43:03 2008 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/wireless/ath5k/base.c\n\tnet/8021q/vlan_core.c\n"
    },
    {
      "commit": "ab2910921064b657610a3b501358a305e13087ea",
      "tree": "71c2bf0b12a8a9c6fe434f3f260a559ccd256638",
      "parents": [
        "6d9f239a1edb31d6133230f478fd1dc2da338ec5"
      ],
      "author": {
        "name": "Jianjun Kong",
        "email": "jianjun@zeuux.org",
        "time": "Mon Nov 03 18:23:09 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 03 18:23:09 2008 -0800"
      },
      "message": "net: remove two duplicated #include\n\nRemoved duplicated #include \u003crdma/ib_verbs.h\u003e in net/9p/trans_rdma.c\n\t\tand  #include \u003clinux/thread_info.h\u003e in net/socket.c\n\nSigned-off-by: Jianjun Kong \u003cjianjun@zeuux.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "233e70f4228e78eb2f80dc6650f65d3ae3dbf17c",
      "tree": "4e18fbe1851e6d2161b7f18265cb21f8a61e3ce7",
      "parents": [
        "3318a386e4ca68c76e0294363d29bdc46fcad670"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Fri Oct 31 23:28:30 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 01 09:49:46 2008 -0700"
      },
      "message": "saner FASYNC handling on file close\n\nAs it is, all instances of -\u003erelease() for files that have -\u003efasync()\nneed to remember to evict file from fasync lists; forgetting that\ncreates a hole and we actually have a bunch that *does* forget.\n\nSo let\u0027s keep our lives simple - let __fput() check FASYNC in\nfile-\u003ef_flags and call -\u003efasync() there if it\u0027s been set.  And lose that\ncrap in -\u003erelease() instances - leaving it there is still valid, but we\ndon\u0027t have to bother anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "95a5afca4a8d2e1cb77e1d4bc6ff9f718dc32f7a",
      "tree": "15452d28df4e4d76fc1276e791a7cc3c6e1a9b3a",
      "parents": [
        "00269b54edbf25f3bb0dccb558ae23a6fc77ed86"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Thu Oct 16 15:24:51 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 16 15:24:51 2008 -0700"
      },
      "message": "net: Remove CONFIG_KMOD from net/ (towards removing CONFIG_KMOD entirely)\n\nSome code here depends on CONFIG_KMOD to not try to load\nprotocol modules or similar, replace by CONFIG_MODULES\nwhere more than just request_module depends on CONFIG_KMOD\nand and also use try_then_request_module in ebtables.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2d4c8266774188cda7f7e612e6dfb8ad12c579d5",
      "tree": "9e04c9b2c166ede69193130d745fffd763707f62",
      "parents": [
        "6675ce13ed783f88ea5d82f0d855462b76ff0dad"
      ],
      "author": {
        "name": "Michael Kerrisk",
        "email": "mtk.manpages@googlemail.com",
        "time": "Mon Sep 22 13:57:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 23 08:09:14 2008 -0700"
      },
      "message": "sys_paccept: disable paccept() until API design is resolved\n\nThe reasons for disabling paccept() are as follows:\n\n* The API is more complex than needed.  There is AFAICS no demonstrated\n  use case that the sigset argument of this syscall serves that couldn\u0027t\n  equally be served by the use of pselect/ppoll/epoll_pwait + traditional\n  accept().  Roland seems to concur with this opinion\n  (http://thread.gmane.org/gmane.linux.kernel/723953/focus\u003d732255).  I\n  have (more than once) asked Ulrich to explain otherwise\n  (http://thread.gmane.org/gmane.linux.kernel/723952/focus\u003d731018), but he\n  does not respond, so one is left to assume that he doesn\u0027t know of such\n  a case.\n\n* The use of a sigset argument is not consistent with other I/O APIs\n  that can block on a single file descriptor (e.g., read(), recv(),\n  connect()).\n\n* The behavior of paccept() when interrupted by a signal is IMO strange:\n  the kernel restarts the system call if SA_RESTART was set for the\n  handler.  I think that it should not do this -- that it should behave\n  consistently with paccept()/ppoll()/epoll_pwait(), which never restart,\n  regardless of SA_RESTART.  The reasoning here is that the very purpose\n  of paccept() is to wait for a connection or a signal, and that\n  restarting in the latter case is probably never useful.  (Note: Roland\n  disagrees on this point, believing that rather paccept() should be\n  consistent with accept() in its behavior wrt EINTR\n  (http://thread.gmane.org/gmane.linux.kernel/723953/focus\u003d732255).)\n\nI believe that instead, a simpler API, consistent with Ulrich\u0027s other\nrecent additions, is preferable:\n\naccept4(int fd, struct sockaddr *sa, socklen_t *salen, ind flags);\n\n(This simpler API was originally proposed by Ulrich:\nhttp://thread.gmane.org/gmane.linux.network/92072)\n\nIf this simpler API is added, then if we later decide that the sigset\nargument really is required, then a suitable bit in \u0027flags\u0027 could be added\nto indicate the presence of the sigset argument.\n\nAt this point, I am hoping we either will get a counter-argument from\nUlrich about why we really do need paccept()\u0027s sigset argument, or that he\nwill resubmit the original accept4() patch.\n\nSigned-off-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Alan Cox \u003calan@redhat.com\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Jakub Jelinek \u003cjakub@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "51cc50685a4275c6a02653670af9f108a64e01cf",
      "tree": "819d47bd2b0c8a9d1835d863853804b0a0242b97",
      "parents": [
        "d91958815d214ea365b98cbff6215383897edcb6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Jul 25 19:45:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "SL*B: drop kmem cache argument from constructor\n\nKmem cache passed to constructor is only needed for constructors that are\nthemselves multiplexeres.  Nobody uses this \"feature\", nor does anybody uses\npassed kmem cache in non-trivial way, so pass only pointer to object.\n\nNon-trivial places are:\n\tarch/powerpc/mm/init_64.c\n\tarch/powerpc/mm/hugetlbpage.c\n\nThis is flag day, yes.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\n[akpm@linux-foundation.org: fix arch/powerpc/mm/hugetlbpage.c]\n[akpm@linux-foundation.org: fix mm/slab.c]\n[akpm@linux-foundation.org: fix ubifs]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e38b36f325153eaadd1c2a7abc5762079233e540",
      "tree": "92cfc9855e41c5328d91456f5e373c00ecb8d383",
      "parents": [
        "510df2dd482496083e1c3b1a8c9b6afd5fa4c7d7"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:29 2008 -0700"
      },
      "message": "flag parameters: check magic constants\n\nThis patch adds test that ensure the boundary conditions for the various\nconstants introduced in the previous patches is met.  No code is generated.\n\n[akpm@linux-foundation.org: fix alpha]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "77d2720059618b9b6e827a8b73831eb6c6fad63c",
      "tree": "c8a08caa9a864c546fda2e043d5232c377d210c6",
      "parents": [
        "99829b832997d907c30669bfd17da32151e18f04"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:29 2008 -0700"
      },
      "message": "flag parameters: NONBLOCK in socket and socketpair\n\nThis patch introduces support for the SOCK_NONBLOCK flag in socket,\nsocketpair, and  paccept.  To do this the internal function sock_attach_fd\ngets an additional parameter which it uses to set the appropriate flag for\nthe file descriptor.\n\nGiven that in modern, scalable programs almost all socket connections are\nnon-blocking and the minimal additional cost for the new functionality\nI see no reason not to add this code.\n\nThe following test must be adjusted for architectures other than x86 and\nx86-64 and in case the syscall numbers changed.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cfcntl.h\u003e\n#include \u003cpthread.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cnetinet/in.h\u003e\n#include \u003csys/socket.h\u003e\n#include \u003csys/syscall.h\u003e\n\n#ifndef __NR_paccept\n# ifdef __x86_64__\n#  define __NR_paccept 288\n# elif defined __i386__\n#  define SYS_PACCEPT 18\n#  define USE_SOCKETCALL 1\n# else\n#  error \"need __NR_paccept\"\n# endif\n#endif\n\n#ifdef USE_SOCKETCALL\n# define paccept(fd, addr, addrlen, mask, flags) \\\n  ({ long args[6] \u003d { \\\n       (long) fd, (long) addr, (long) addrlen, (long) mask, 8, (long) flags }; \\\n     syscall (__NR_socketcall, SYS_PACCEPT, args); })\n#else\n# define paccept(fd, addr, addrlen, mask, flags) \\\n  syscall (__NR_paccept, fd, addr, addrlen, mask, 8, flags)\n#endif\n\n#define PORT 57392\n\n#define SOCK_NONBLOCK O_NONBLOCK\n\nstatic pthread_barrier_t b;\n\nstatic void *\ntf (void *arg)\n{\n  pthread_barrier_wait (\u0026b);\n  int s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  struct sockaddr_in sin;\n  sin.sin_family \u003d AF_INET;\n  sin.sin_addr.s_addr \u003d htonl (INADDR_LOOPBACK);\n  sin.sin_port \u003d htons (PORT);\n  connect (s, (const struct sockaddr *) \u0026sin, sizeof (sin));\n  close (s);\n  pthread_barrier_wait (\u0026b);\n\n  pthread_barrier_wait (\u0026b);\n  s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  sin.sin_port \u003d htons (PORT);\n  connect (s, (const struct sockaddr *) \u0026sin, sizeof (sin));\n  close (s);\n  pthread_barrier_wait (\u0026b);\n\n  return NULL;\n}\n\nint\nmain (void)\n{\n  int fd;\n  fd \u003d socket (PF_INET, SOCK_STREAM, 0);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"socket(0) failed\");\n      return 1;\n    }\n  int fl \u003d fcntl (fd, F_GETFL);\n  if (fl \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if (fl \u0026 O_NONBLOCK)\n    {\n      puts (\"socket(0) set non-blocking mode\");\n      return 1;\n    }\n  close (fd);\n\n  fd \u003d socket (PF_INET, SOCK_STREAM|SOCK_NONBLOCK, 0);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"socket(SOCK_NONBLOCK) failed\");\n      return 1;\n    }\n  fl \u003d fcntl (fd, F_GETFL);\n  if (fl \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if ((fl \u0026 O_NONBLOCK) \u003d\u003d 0)\n    {\n      puts (\"socket(SOCK_NONBLOCK) does not set non-blocking mode\");\n      return 1;\n    }\n  close (fd);\n\n  int fds[2];\n  if (socketpair (PF_UNIX, SOCK_STREAM, 0, fds) \u003d\u003d -1)\n    {\n      puts (\"socketpair(0) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      fl \u003d fcntl (fds[i], F_GETFL);\n      if (fl \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if (fl \u0026 O_NONBLOCK)\n        {\n          printf (\"socketpair(0) set non-blocking mode for fds[%d]\\n\", i);\n          return 1;\n        }\n      close (fds[i]);\n    }\n\n  if (socketpair (PF_UNIX, SOCK_STREAM|SOCK_NONBLOCK, 0, fds) \u003d\u003d -1)\n    {\n      puts (\"socketpair(SOCK_NONBLOCK) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      fl \u003d fcntl (fds[i], F_GETFL);\n      if (fl \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if ((fl \u0026 O_NONBLOCK) \u003d\u003d 0)\n        {\n          printf (\"socketpair(SOCK_NONBLOCK) does not set non-blocking mode for fds[%d]\\n\", i);\n          return 1;\n        }\n      close (fds[i]);\n    }\n\n  pthread_barrier_init (\u0026b, NULL, 2);\n\n  struct sockaddr_in sin;\n  pthread_t th;\n  if (pthread_create (\u0026th, NULL, tf, NULL) !\u003d 0)\n    {\n      puts (\"pthread_create failed\");\n      return 1;\n    }\n\n  int s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  int reuse \u003d 1;\n  setsockopt (s, SOL_SOCKET, SO_REUSEADDR, \u0026reuse, sizeof (reuse));\n  sin.sin_family \u003d AF_INET;\n  sin.sin_addr.s_addr \u003d htonl (INADDR_LOOPBACK);\n  sin.sin_port \u003d htons (PORT);\n  bind (s, (struct sockaddr *) \u0026sin, sizeof (sin));\n  listen (s, SOMAXCONN);\n\n  pthread_barrier_wait (\u0026b);\n\n  int s2 \u003d paccept (s, NULL, 0, NULL, 0);\n  if (s2 \u003c 0)\n    {\n      puts (\"paccept(0) failed\");\n      return 1;\n    }\n\n  fl \u003d fcntl (s2, F_GETFL);\n  if (fl \u0026 O_NONBLOCK)\n    {\n      puts (\"paccept(0) set non-blocking mode\");\n      return 1;\n    }\n  close (s2);\n  close (s);\n\n  pthread_barrier_wait (\u0026b);\n\n  s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  sin.sin_port \u003d htons (PORT);\n  setsockopt (s, SOL_SOCKET, SO_REUSEADDR, \u0026reuse, sizeof (reuse));\n  bind (s, (struct sockaddr *) \u0026sin, sizeof (sin));\n  listen (s, SOMAXCONN);\n\n  pthread_barrier_wait (\u0026b);\n\n  s2 \u003d paccept (s, NULL, 0, NULL, SOCK_NONBLOCK);\n  if (s2 \u003c 0)\n    {\n      puts (\"paccept(SOCK_NONBLOCK) failed\");\n      return 1;\n    }\n\n  fl \u003d fcntl (s2, F_GETFL);\n  if ((fl \u0026 O_NONBLOCK) \u003d\u003d 0)\n    {\n      puts (\"paccept(SOCK_NONBLOCK) does not set non-blocking mode\");\n      return 1;\n    }\n  close (s2);\n  close (s);\n\n  pthread_barrier_wait (\u0026b);\n  puts (\"OK\");\n\n  return 0;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c019bbc612f6633ede7ed67725cbf68de45ae8a4",
      "tree": "99b23660c2915e699f35f3fc5820b5cc30f890b3",
      "parents": [
        "aaca0bdca573f3f51ea03139f9c7289541e7bca3"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:21 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:27 2008 -0700"
      },
      "message": "flag parameters: paccept w/out set_restore_sigmask\n\nSome platforms do not have support to restore the signal mask in the\nreturn path from a syscall.  For those platforms syscalls like pselect are\nnot defined at all.  This is, I think, not a good choice for paccept()\nsince paccept() adds more value on top of accept() than just the signal\nmask handling.\n\nTherefore this patch defines a scaled down version of the sys_paccept\nfunction for those platforms.  It returns -EINVAL in case the signal mask\nis non-NULL but behaves the same otherwise.\n\nNote that I explicitly included \u003clinux/thread_info.h\u003e.  I saw that it is\ncurrently included but indirectly two levels down.  There is too much risk\nin relying on this.  The header might change and then suddenly the\nfunction definition would change without anyone immediately noticing.\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aaca0bdca573f3f51ea03139f9c7289541e7bca3",
      "tree": "d25b0baa73b5301d91a5c848a896bad0fb719acc",
      "parents": [
        "a677a039be7243357d93502bff2b40850c942e2d"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:27 2008 -0700"
      },
      "message": "flag parameters: paccept\n\nThis patch is by far the most complex in the series.  It adds a new syscall\npaccept.  This syscall differs from accept in that it adds (at the userlevel)\ntwo additional parameters:\n\n- a signal mask\n- a flags value\n\nThe flags parameter can be used to set flag like SOCK_CLOEXEC.  This is\nimlpemented here as well.  Some people argued that this is a property which\nshould be inherited from the file desriptor for the server but this is against\nPOSIX.  Additionally, we really want the signal mask parameter as well\n(similar to pselect, ppoll, etc).  So an interface change in inevitable.\n\nThe flag value is the same as for socket and socketpair.  I think diverging\nhere will only create confusion.  Similar to the filesystem interfaces where\nthe use of the O_* constants differs, it is acceptable here.\n\nThe signal mask is handled as for pselect etc.  The mask is temporarily\ninstalled for the thread and removed before the call returns.  I modeled the\ncode after pselect.  If there is a problem it\u0027s likely also in pselect.\n\nFor architectures which use socketcall I maintained this interface instead of\nadding a system call.  The symmetry shouldn\u0027t be broken.\n\nThe following test must be adjusted for architectures other than x86 and\nx86-64 and in case the syscall numbers changed.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cerrno.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cpthread.h\u003e\n#include \u003csignal.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cnetinet/in.h\u003e\n#include \u003csys/socket.h\u003e\n#include \u003csys/syscall.h\u003e\n\n#ifndef __NR_paccept\n# ifdef __x86_64__\n#  define __NR_paccept 288\n# elif defined __i386__\n#  define SYS_PACCEPT 18\n#  define USE_SOCKETCALL 1\n# else\n#  error \"need __NR_paccept\"\n# endif\n#endif\n\n#ifdef USE_SOCKETCALL\n# define paccept(fd, addr, addrlen, mask, flags) \\\n  ({ long args[6] \u003d { \\\n       (long) fd, (long) addr, (long) addrlen, (long) mask, 8, (long) flags }; \\\n     syscall (__NR_socketcall, SYS_PACCEPT, args); })\n#else\n# define paccept(fd, addr, addrlen, mask, flags) \\\n  syscall (__NR_paccept, fd, addr, addrlen, mask, 8, flags)\n#endif\n\n#define PORT 57392\n\n#define SOCK_CLOEXEC O_CLOEXEC\n\nstatic pthread_barrier_t b;\n\nstatic void *\ntf (void *arg)\n{\n  pthread_barrier_wait (\u0026b);\n  int s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  struct sockaddr_in sin;\n  sin.sin_family \u003d AF_INET;\n  sin.sin_addr.s_addr \u003d htonl (INADDR_LOOPBACK);\n  sin.sin_port \u003d htons (PORT);\n  connect (s, (const struct sockaddr *) \u0026sin, sizeof (sin));\n  close (s);\n\n  pthread_barrier_wait (\u0026b);\n  s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  sin.sin_port \u003d htons (PORT);\n  connect (s, (const struct sockaddr *) \u0026sin, sizeof (sin));\n  close (s);\n  pthread_barrier_wait (\u0026b);\n\n  pthread_barrier_wait (\u0026b);\n  sleep (2);\n  pthread_kill ((pthread_t) arg, SIGUSR1);\n\n  return NULL;\n}\n\nstatic void\nhandler (int s)\n{\n}\n\nint\nmain (void)\n{\n  pthread_barrier_init (\u0026b, NULL, 2);\n\n  struct sockaddr_in sin;\n  pthread_t th;\n  if (pthread_create (\u0026th, NULL, tf, (void *) pthread_self ()) !\u003d 0)\n    {\n      puts (\"pthread_create failed\");\n      return 1;\n    }\n\n  int s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  int reuse \u003d 1;\n  setsockopt (s, SOL_SOCKET, SO_REUSEADDR, \u0026reuse, sizeof (reuse));\n  sin.sin_family \u003d AF_INET;\n  sin.sin_addr.s_addr \u003d htonl (INADDR_LOOPBACK);\n  sin.sin_port \u003d htons (PORT);\n  bind (s, (struct sockaddr *) \u0026sin, sizeof (sin));\n  listen (s, SOMAXCONN);\n\n  pthread_barrier_wait (\u0026b);\n\n  int s2 \u003d paccept (s, NULL, 0, NULL, 0);\n  if (s2 \u003c 0)\n    {\n      puts (\"paccept(0) failed\");\n      return 1;\n    }\n\n  int coe \u003d fcntl (s2, F_GETFD);\n  if (coe \u0026 FD_CLOEXEC)\n    {\n      puts (\"paccept(0) set close-on-exec-flag\");\n      return 1;\n    }\n  close (s2);\n\n  pthread_barrier_wait (\u0026b);\n\n  s2 \u003d paccept (s, NULL, 0, NULL, SOCK_CLOEXEC);\n  if (s2 \u003c 0)\n    {\n      puts (\"paccept(SOCK_CLOEXEC) failed\");\n      return 1;\n    }\n\n  coe \u003d fcntl (s2, F_GETFD);\n  if ((coe \u0026 FD_CLOEXEC) \u003d\u003d 0)\n    {\n      puts (\"paccept(SOCK_CLOEXEC) does not set close-on-exec flag\");\n      return 1;\n    }\n  close (s2);\n\n  pthread_barrier_wait (\u0026b);\n\n  struct sigaction sa;\n  sa.sa_handler \u003d handler;\n  sa.sa_flags \u003d 0;\n  sigemptyset (\u0026sa.sa_mask);\n  sigaction (SIGUSR1, \u0026sa, NULL);\n\n  sigset_t ss;\n  pthread_sigmask (SIG_SETMASK, NULL, \u0026ss);\n  sigaddset (\u0026ss, SIGUSR1);\n  pthread_sigmask (SIG_SETMASK, \u0026ss, NULL);\n\n  sigdelset (\u0026ss, SIGUSR1);\n  alarm (4);\n  pthread_barrier_wait (\u0026b);\n\n  errno \u003d 0 ;\n  s2 \u003d paccept (s, NULL, 0, \u0026ss, 0);\n  if (s2 !\u003d -1 || errno !\u003d EINTR)\n    {\n      puts (\"paccept did not fail with EINTR\");\n      return 1;\n    }\n\n  close (s);\n\n  puts (\"OK\");\n\n  return 0;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n[akpm@linux-foundation.org: make it compile]\n[akpm@linux-foundation.org: add sys_ni stub]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a677a039be7243357d93502bff2b40850c942e2d",
      "tree": "6cf1669c4752e2527e02f33baa920cd2dfd59117",
      "parents": [
        "6e2c10a12a2170856f5582d62d583cbcd1cb5eaf"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:27 2008 -0700"
      },
      "message": "flag parameters: socket and socketpair\n\nThis patch adds support for flag values which are ORed to the type passwd\nto socket and socketpair.  The additional code is minimal.  The flag\nvalues in this implementation can and must match the O_* flags.  This\navoids overhead in the conversion.\n\nThe internal functions sock_alloc_fd and sock_map_fd get a new parameters\nand all callers are changed.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cnetinet/in.h\u003e\n#include \u003csys/socket.h\u003e\n\n#define PORT 57392\n\n/* For Linux these must be the same.  */\n#define SOCK_CLOEXEC O_CLOEXEC\n\nint\nmain (void)\n{\n  int fd;\n  fd \u003d socket (PF_INET, SOCK_STREAM, 0);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"socket(0) failed\");\n      return 1;\n    }\n  int coe \u003d fcntl (fd, F_GETFD);\n  if (coe \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if (coe \u0026 FD_CLOEXEC)\n    {\n      puts (\"socket(0) set close-on-exec flag\");\n      return 1;\n    }\n  close (fd);\n\n  fd \u003d socket (PF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"socket(SOCK_CLOEXEC) failed\");\n      return 1;\n    }\n  coe \u003d fcntl (fd, F_GETFD);\n  if (coe \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if ((coe \u0026 FD_CLOEXEC) \u003d\u003d 0)\n    {\n      puts (\"socket(SOCK_CLOEXEC) does not set close-on-exec flag\");\n      return 1;\n    }\n  close (fd);\n\n  int fds[2];\n  if (socketpair (PF_UNIX, SOCK_STREAM, 0, fds) \u003d\u003d -1)\n    {\n      puts (\"socketpair(0) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      coe \u003d fcntl (fds[i], F_GETFD);\n      if (coe \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if (coe \u0026 FD_CLOEXEC)\n        {\n          printf (\"socketpair(0) set close-on-exec flag for fds[%d]\\n\", i);\n          return 1;\n        }\n      close (fds[i]);\n    }\n\n  if (socketpair (PF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0, fds) \u003d\u003d -1)\n    {\n      puts (\"socketpair(SOCK_CLOEXEC) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      coe \u003d fcntl (fds[i], F_GETFD);\n      if (coe \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if ((coe \u0026 FD_CLOEXEC) \u003d\u003d 0)\n        {\n          printf (\"socketpair(SOCK_CLOEXEC) does not set close-on-exec flag for fds[%d]\\n\", i);\n          return 1;\n        }\n      close (fds[i]);\n    }\n\n  puts (\"OK\");\n\n  return 0;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "230b183921ecbaa5fedc0d35ad6ba7bb64b6e06a",
      "tree": "2ea0a3bde5deab4b90ca9ed58e23b020494f25a0",
      "parents": [
        "53b7997fd5c62408d10b9aafb38974ce90fd2356"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Sat Jul 19 22:35:47 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 22:35:47 2008 -0700"
      },
      "message": "net: Use standard structures for generic socket address structures.\n\nUse sockaddr_storage{} for generic socket address storage\nand ensures proper alignment.\nUse sockaddr{} for pointers to omit several casts.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "87de87d5e47f94b4ea647a5bd1bc8dc1f7930db4",
      "tree": "09e0f3b084466a7abca17356cce7c39b7b1a8783",
      "parents": [
        "a67fa76d8be4e24e2d61cd76438a893d4c2886f7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 03 09:14:03 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 16 18:32:46 2008 -0700"
      },
      "message": "wext: Dispatch and handle compat ioctls entirely in net/wireless/wext.c\n\nNext we can kill the hacks in fs/compat_ioctl.c and also\ndispatch compat ioctls down into the driver and 80211 protocol\nhelper layers in order to handle iw_point objects embedded in\nstream replies which need to be translated.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cd58f2a96ba95fb5b69580784bc6f7179001869c",
      "tree": "c1474ed4270a82253be7f44b2dec23be55eef73b",
      "parents": [
        "201410ce85d80b7b893cdc72e944a1341dd393f1"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Apr 23 03:37:49 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 23 03:37:49 2008 -0700"
      },
      "message": "net: Unexport move_addr_to_{kernel,user}\n\nAfter the removal of the Solaris binary emulation the exports of \nmove_addr_to_{kernel,user} are no longer used.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8efa6e93cb2666dceafc4844057fdcb9aa324fb7",
      "tree": "3fbf8da25edf1b942411d89896400effd5a83419",
      "parents": [
        "3edf8fa5ccf10688a9280b5cbca8ed3947c42866"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Mar 31 19:41:14 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 31 19:41:14 2008 -0700"
      },
      "message": "[NETNS]: Introduce a netns_core structure.\n\nThere\u0027s already some stuff on the struct net, that should better\nbe folded into netns_core structure. I\u0027m making the per-proto inuse \ncounter be per-net also, which is also a candidate for this, so \nintroduce this structure and populate it a bit.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3b1e0a655f8eba44ab1ee2a1068d169ccfb853b9",
      "tree": "09edb35f32ebcfb1b4dad904425128a110ef16ee",
      "parents": [
        "c346dca10840a874240c78efe3f39acf4312a1f2"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Mar 26 02:26:21 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Mar 26 04:39:55 2008 +0900"
      },
      "message": "[NET] NETNS: Omit sock-\u003esk_net without CONFIG_NET_NS.\n\nIntroduce per-sock inlines: sock_net(), sock_net_set()\nand per-inet_timewait_sock inlines: twsk_net(), twsk_net_set().\nWithout CONFIG_NET_NS, no namespace other than \u0026init_net exists.\nLet\u0027s explicitly define them to help compiler optimizations.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "7512cbf6efc97644812f137527a54b8e92b6a90a",
      "tree": "bf603e7ede2af1163c866bc04e540807d1a298c1",
      "parents": [
        "1233823b0847190976d69a86d7bb1287992ba2c7"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Mar 21 15:58:52 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 21 15:58:52 2008 -0700"
      },
      "message": "[DLCI]: Fix tiny race between module unload and sock_ioctl.\n\nThis is a narrow pedantry :) but the dlci_ioctl_hook check and call\nshould not be parted with the mutex lock.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "997b37da1515c1620692521786a74af271664eb7",
      "tree": "ffd071fe5efb432228f5c915d1fd3c91e2439088",
      "parents": [
        "69c3683ca7fe066ecba9e8a0424c5abd258a5d58"
      ],
      "author": {
        "name": "Rémi Denis-Courmont",
        "email": "rdenis@simphalempin.com",
        "time": "Fri Feb 15 02:35:45 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 15 02:35:45 2008 -0800"
      },
      "message": "[NET]: Make sure sockets implement splice_read\n\nFixes a segmentation fault when trying to splice from a non-TCP socket.\n\nSigned-off-by: Rémi Denis-Courmont \u003crdenis@simphalempin.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b8e1f9b5c37e77cc8f978a58859b35fe5edd5542",
      "tree": "3c39da61f10eeb8b8e200ec68770128f1b57f25d",
      "parents": [
        "790a35328991b01181ff5624bdb084053b6fac54"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Dec 08 00:12:33 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:56:57 2008 -0800"
      },
      "message": "[NET] sysctl: make sysctl_somaxconn per-namespace\n\nJust move the variable on the struct net and adjust\nits usage.\n\nOthers sysctls from sys.net.core table are more\ndifficult to virtualize (i.e. make them per-namespace),\nbut I\u0027ll look at them as well a bit later.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@oenvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8d8ad9d7c4bfe79bc91b7fc419ecfb9dcdfe6a51",
      "tree": "4b655c4b898e634f39fd170eeb8d06f45b240660",
      "parents": [
        "ce865a61c810c971b47f57c729ec6e9b2d522d94"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Nov 26 20:10:50 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:03 2008 -0800"
      },
      "message": "[NET]: Name magic constants in sock_wake_async()\n\nThe sock_wake_async() performs a bit different actions\ndepending on \"how\" argument. Unfortunately this argument\nony has numerical magic values.\n\nI propose to give names to their constants to help people\nreading this function callers understand what\u0027s going on\nwithout looking into this function all the time.\n\nI suppose this is 2.6.25 material, but if it\u0027s not (or the\nnaming seems poor/bad/awful), I can rework it against the\ncurrent net-2.6 tree.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "de0fa95c14bc4d4b545fae26439371ebfdcb8534",
      "tree": "46d2f8c094f9e472545d68addcd7ee947fa82707",
      "parents": [
        "62013dbb8418eb7231c1577d238cf2e76b7696b0"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Nov 14 16:01:43 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:54:00 2008 -0800"
      },
      "message": "[NET]: Use sockfd_lookup_light in the rest of the net/socket.c\n\nSome time ago a sockfd_lookup_light was introduced and\nmost of the socket.c file was patched to use it. However\ntwo routines were left - sys_sendto and sys_recvfrom.\n\nPatch them as well, since this helper does exactly what\nthese two need.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9c55e01c0cc835818475a6ce8c4d684df9949ac8",
      "tree": "1115311436677f837a4b477e3fd23c5e0ae184ef",
      "parents": [
        "bbdfc2f70610bebb841d0874dc901c648308e43a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Nov 06 23:30:13 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:53:31 2008 -0800"
      },
      "message": "[TCP]: Splice receive support.\n\nSupport for network splice receive.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "91cf45f02af5c871251165d000c3f42a2a0b0552",
      "tree": "0e4c0a9f624732d47a46301a394e799dab48afe0",
      "parents": [
        "62768e28d606c10ba54217f908123de34dad9374"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 12 18:10:39 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 12 18:10:39 2007 -0800"
      },
      "message": "[NET]: Add the helper kernel_sock_shutdown()\n\n...and fix a couple of bugs in the NBD, CIFS and OCFS2 socket handlers.\n\nLooking at the sock-\u003eop-\u003eshutdown() handlers, it looks as if all of them\ntake a SHUT_RD/SHUT_WR/SHUT_RDWR argument instead of the\nRCV_SHUTDOWN/SEND_SHUTDOWN arguments.\nAdd a helper, and then define the SHUT_* enum to ensure that kernel users\nof shutdown() don\u0027t get confused.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bf3c23d171e35e6e168074a1514b0acd59cfd81a",
      "tree": "7e72bc27a71802ac5f803cecb53b5e8312e89678",
      "parents": [
        "29b67497f256399c4aa2adec27ab7ba24bba44e8"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Oct 29 21:54:02 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Oct 29 22:37:34 2007 -0700"
      },
      "message": "[NET]: Fix error reporting in sys_socketpair().\n\nIf either of the two sock_alloc_fd() calls fail, we\nforget to update \u0027err\u0027 and thus we\u0027ll erroneously\nreturn zero in these cases.\n\nBased upon a report and patch from Rich Paul, and\ncommentary from Chuck Ebbert.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ce8d2cdf3d2b73e346c82e6f0a46da331df6364c",
      "tree": "bf3597f2d4f57d6e30a7703d7fce0dbf8c757962",
      "parents": [
        "348366b963e4e1462c8354827a9cb910aa865bf2"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Tue Oct 16 23:31:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:04 2007 -0700"
      },
      "message": "r/o bind mounts: filesystem helpers for custom \u0027struct file\u0027s\n\nWhy do we need r/o bind mounts?\n\nThis feature allows a read-only view into a read-write filesystem.  In the\nprocess of doing that, it also provides infrastructure for keeping track of\nthe number of writers to any given mount.\n\nThis has a number of uses.  It allows chroots to have parts of filesystems\nwritable.  It will be useful for containers in the future because users may\nhave root inside a container, but should not be allowed to write to\nsomefilesystems.  This also replaces patches that vserver has had out of the\ntree for several years.\n\nIt allows security enhancement by making sure that parts of your filesystem\nread-only (such as when you don\u0027t trust your FTP server), when you don\u0027t want\nto have entire new filesystems mounted, or when you want atime selectively\nupdated.  I\u0027ve been using the following script to test that the feature is\nworking as desired.  It takes a directory and makes a regular bind and a r/o\nbind mount of it.  It then performs some normal filesystem operations on the\nthree directories, including ones that are expected to fail, like creating a\nfile on the r/o mount.\n\nThis patch:\n\nSome filesystems forego the vfs and may_open() and create their own \u0027struct\nfile\u0027s.\n\nThis patch creates a couple of helper functions which can be used by these\nfilesystems, and will provide a unified place which the r/o bind mount code\nmay patch.\n\nAlso, rename an existing, static-scope init_file() to a less generic name.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ba9b9d0ba0a49d91fa6417c7510ee36f48cf957",
      "tree": "191b4f45f926e44b882b1e87a9a85dc12230b892",
      "parents": [
        "b811c202a0edadaac7242ab834fe7ba409978ae7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Oct 16 23:25:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "Slab API: remove useless ctor parameter and reorder parameters\n\nSlab constructors currently have a flags parameter that is never used.  And\nthe order of the arguments is opposite to other slab functions.  The object\npointer is placed before the kmem_cache pointer.\n\nConvert\n\n        ctor(void *object, struct kmem_cache *s, unsigned long flags)\n\nto\n\n        ctor(struct kmem_cache *s, void *object)\n\nthroughout the kernel\n\n[akpm@linux-foundation.org: coupla fixes]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fa8705b00aeca19d91a1437b8a5cf865999b28f6",
      "tree": "d91cf4fe1b632836d286a1216b4f821903b8d4f5",
      "parents": [
        "414c66e00e9fb4572e38bd14e6cc570eae8c5a61"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Wed Oct 10 21:09:04 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 10 21:09:04 2007 -0700"
      },
      "message": "[NET]: sanitize kernel_accept() error path\n\nIf kernel_accept() returns an error, it may pass back a pointer to\nfreed memory (which the caller should ignore).  Make it pass back NULL\ninstead for better safety.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cfcabdcc2d5a810208e5bb3974121b7ed60119aa",
      "tree": "1aed711eeecc5a303b57f1fc47e1b5746e8a72c2",
      "parents": [
        "de83c058af25aa97ed4864abab11e90e8dead6e2"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@linux-foundation.org",
        "time": "Tue Oct 09 01:59:42 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:54:48 2007 -0700"
      },
      "message": "[NET]: sparse warning fixes\n\nFix a bunch of sparse warnings. Mostly about 0 used as\nNULL pointer, and shadowed variable declarations.\nOne notable case was that hash size should have been unsigned.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "881d966b48b035ab3f3aeaae0f3d3f9b584f45b2",
      "tree": "c579d59a4107cbbe9e2b85939bc0d496b815c887",
      "parents": [
        "b4b510290b056b86611757ce1175a230f1080f53"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Sep 17 11:56:21 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:10 2007 -0700"
      },
      "message": "[NET]: Make the device list and device lookups per namespace.\n\nThis patch makes most of the generic device layer network\nnamespace safe.  This patch makes dev_base_head a\nnetwork namespace variable, and then it picks up\na few associated variables.  The functions:\ndev_getbyhwaddr\ndev_getfirsthwbytype\ndev_get_by_flags\ndev_get_by_name\n__dev_get_by_name\ndev_get_by_index\n__dev_get_by_index\ndev_ioctl\ndev_ethtool\ndev_load\nwireless_process_ioctl\n\nwere modified to take a network namespace argument, and\ndeal with it.\n\nvlan_ioctl_set and brioctl_set were modified so their\nhooks will receive a network namespace argument.\n\nSo basically anthing in the core of the network stack that was\naffected to by the change of dev_base was modified to handle\nmultiple network namespaces.  The rest of the network stack was\nsimply modified to explicitly use \u0026init_net the initial network\nnamespace.  This can be fixed when those components of the network\nstack are modified to handle multiple network namespaces.\n\nFor now the ifindex generator is left global.\n\nFundametally ifindex numbers are per namespace, or else\nwe will have corner case problems with migration when\nwe get that far.\n\nAt the same time there are assumptions in the network stack\nthat the ifindex of a network device won\u0027t change.  Making\nthe ifindex number global seems a good compromise until\nthe network stack can cope with ifindex changes when\nyou change namespaces, and the like.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1b8d7ae42d02e483ad94035cca851e4f7fbecb40",
      "tree": "81f8cc0ee49ef99cc67dfed3dc7b7ecb510abf8b",
      "parents": [
        "457c4cbc5a3dde259d2a1f15d5f9785290397267"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Oct 08 23:24:22 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:07 2007 -0700"
      },
      "message": "[NET]: Make socket creation namespace safe.\n\nThis patch passes in the namespace a new socket should be created in\nand has the socket code do the appropriate reference counting.  By\nvirtue of this all socket create methods are touched.  In addition\nthe socket create methods are modified so that they will fail if\nyou attempt to create a socket in a non-default network namespace.\n\nFailing if we attempt to create a socket outside of the default\nnetwork namespace ensures that as we incrementally make the network stack\nnetwork namespace aware we will not export functionality that someone\nhas not audited and made certain is network namespace safe.\nAllowing us to partially enable network namespaces before all of the\nexotic protocols are supported.\n\nAny protocol layers I have missed will fail to compile because I now\npass an extra parameter into the socket creation code.\n\n[ Integrated AF_IUCV build fixes from Andrew Morton... -DaveM ]\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e79ad711a0108475c1b3a03815527e7237020b08",
      "tree": "77551ee6c67b5901d7c66ff9daf2a8c6df9b0d41",
      "parents": [
        "ff0ce6845bc18292e80ea40d11c3d3a539a3fc5e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Sep 27 13:52:00 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Sep 27 13:52:00 2007 -0700"
      },
      "message": "[NET]: Zero length write() on socket should not simply return 0.\n\nThis fixes kernel bugzilla #5731\n\nIt should generate an empty packet for datagram protocols when the\nsocket is connected, for one.\n\nThe check is doubly-wrong because all that a write() can be is a\nsendmsg() call with a NULL msg_control and a single entry iovec.  No\nspecial semantics should be assigned to it, therefore the zero length\ncheck should be removed entirely.\n\nThis matches the behavior of BSD and several other systems.\n\nAlan Cox notes that SuSv3 says the behavior of a zero length write on\nnon-files is \"unspecified\", but that\u0027s kind of useless since BSD has\ndefined this behavior for a quarter century and BSD is essentially\nwhat application folks code to.\n\nBased upon a patch from Stephen Hemminger.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3b1855255098e1f78fa74c0f3378c0391e9a7a2b",
      "tree": "1478418d585bc29ef4d2029819748e98004fff4c",
      "parents": [
        "cd8d60f28f519786f00d64d68bb3b7669bdfbcb8"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 15 14:46:02 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 15 14:46:02 2007 -0700"
      },
      "message": "[NET]: Fix unbalanced rcu_read_unlock in __sock_create\n\nThe recent RCU work created an unbalanced rcu_read_unlock\nin __sock_create.  This patch fixes that.  Reported by\noleg 123.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "4a19542e5f694cd408a32c3d9dc593ba9366e2d7",
      "tree": "12f5fd603b516b4e24ec4850d5589273d24be569",
      "parents": [
        "f23513e8d96cf5e6cf8d2ff0cb5dd6bbc33995e4"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Sun Jul 15 23:40:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:45 2007 -0700"
      },
      "message": "O_CLOEXEC for SCM_RIGHTS\n\nPart two in the O_CLOEXEC saga: adding support for file descriptors received\nthrough Unix domain sockets.\n\nThe patch is once again pretty minimal, it introduces a new flag for recvmsg\nand passes it just like the existing MSG_CMSG_COMPAT flag.  I think this bit\nis not used otherwise but the networking people will know better.\n\nThis new flag is not recognized by recvfrom and recv.  These functions cannot\nbe used for that purpose and the asymmetry this introduces is not worse than\nthe already existing MSG_CMSG_COMPAT situations.\n\nThe patch must be applied on the patch which introduced O_CLOEXEC.  It has to\nremove static from the new get_unused_fd_flags function but since scm.c cannot\nlive in a module the function still hasn\u0027t to be exported.\n\nHere\u0027s a test program to make sure the code works.  It\u0027s so much longer than\nthe actual patch...\n\n#include \u003cerrno.h\u003e\n#include \u003cerror.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstring.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/socket.h\u003e\n#include \u003csys/un.h\u003e\n\n#ifndef O_CLOEXEC\n# define O_CLOEXEC 02000000\n#endif\n#ifndef MSG_CMSG_CLOEXEC\n# define MSG_CMSG_CLOEXEC 0x40000000\n#endif\n\nint\nmain (int argc, char *argv[])\n{\n  if (argc \u003e 1)\n    {\n      int fd \u003d atol (argv[1]);\n      printf (\"child: fd \u003d %d\\n\", fd);\n      if (fcntl (fd, F_GETFD) \u003d\u003d 0 || errno !\u003d EBADF)\n        {\n          puts (\"file descriptor valid in child\");\n          return 1;\n        }\n      return 0;\n\n    }\n\n  struct sockaddr_un sun;\n  strcpy (sun.sun_path, \"./testsocket\");\n  sun.sun_family \u003d AF_UNIX;\n\n  char databuf[] \u003d \"hello\";\n  struct iovec iov[1];\n  iov[0].iov_base \u003d databuf;\n  iov[0].iov_len \u003d sizeof (databuf);\n\n  union\n  {\n    struct cmsghdr hdr;\n    char bytes[CMSG_SPACE (sizeof (int))];\n  } buf;\n  struct msghdr msg \u003d { .msg_iov \u003d iov, .msg_iovlen \u003d 1,\n                        .msg_control \u003d buf.bytes,\n                        .msg_controllen \u003d sizeof (buf) };\n  struct cmsghdr *cmsg \u003d CMSG_FIRSTHDR (\u0026msg);\n\n  cmsg-\u003ecmsg_level \u003d SOL_SOCKET;\n  cmsg-\u003ecmsg_type \u003d SCM_RIGHTS;\n  cmsg-\u003ecmsg_len \u003d CMSG_LEN (sizeof (int));\n\n  msg.msg_controllen \u003d cmsg-\u003ecmsg_len;\n\n  pid_t child \u003d fork ();\n  if (child \u003d\u003d -1)\n    error (1, errno, \"fork\");\n  if (child \u003d\u003d 0)\n    {\n      int sock \u003d socket (PF_UNIX, SOCK_STREAM, 0);\n      if (sock \u003c 0)\n        error (1, errno, \"socket\");\n\n      if (bind (sock, (struct sockaddr *) \u0026sun, sizeof (sun)) \u003c 0)\n        error (1, errno, \"bind\");\n      if (listen (sock, SOMAXCONN) \u003c 0)\n        error (1, errno, \"listen\");\n\n      int conn \u003d accept (sock, NULL, NULL);\n      if (conn \u003d\u003d -1)\n        error (1, errno, \"accept\");\n\n      *(int *) CMSG_DATA (cmsg) \u003d sock;\n      if (sendmsg (conn, \u0026msg, MSG_NOSIGNAL) \u003c 0)\n        error (1, errno, \"sendmsg\");\n\n      return 0;\n    }\n\n  /* For a test suite this should be more robust like a\n     barrier in shared memory.  */\n  sleep (1);\n\n  int sock \u003d socket (PF_UNIX, SOCK_STREAM, 0);\n  if (sock \u003c 0)\n    error (1, errno, \"socket\");\n\n  if (connect (sock, (struct sockaddr *) \u0026sun, sizeof (sun)) \u003c 0)\n    error (1, errno, \"connect\");\n  unlink (sun.sun_path);\n\n  *(int *) CMSG_DATA (cmsg) \u003d -1;\n\n  if (recvmsg (sock, \u0026msg, MSG_CMSG_CLOEXEC) \u003c 0)\n    error (1, errno, \"recvmsg\");\n\n  int fd \u003d *(int *) CMSG_DATA (cmsg);\n  if (fd \u003d\u003d -1)\n    error (1, 0, \"no descriptor received\");\n\n  char fdname[20];\n  snprintf (fdname, sizeof (fdname), \"%d\", fd);\n  execl (\"/proc/self/exe\", argv[0], fdname, NULL);\n  puts (\"execl failed\");\n  return 1;\n}\n\n[akpm@linux-foundation.org: Fix fastcall inconsistency noted by Michael Buesch]\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Michael Buesch \u003cmb@bu3sch.de\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a35afb830f8d71ec211531aeb9a621b09a2efb39",
      "tree": "198280081e1f8b2f6c450742a5075cc7904a3d58",
      "parents": [
        "5577bd8a85c8b7643a241789b14fafa9c8a6c7db"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 16 22:10:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:04 2007 -0700"
      },
      "message": "Remove SLAB_CTOR_CONSTRUCTOR\n\nSLAB_CTOR_CONSTRUCTOR is always specified. No point in checking it.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c23fbb6bcb3eb9cdf39a103edadf57bde8ce309c",
      "tree": "d79ab2278774de2c1a8061aa948ed068902e87b4",
      "parents": [
        "2793274298c4423d79701e9a8190f2940bf3c785"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue May 08 00:26:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:03 2007 -0700"
      },
      "message": "VFS: delay the dentry name generation on sockets and pipes\n\n1) Introduces a new method in \u0027struct dentry_operations\u0027.  This method\n   called d_dname() might be called from d_path() to build a pathname for\n   special filesystems.  It is called without locks.\n\n   Future patches (if we succeed in having one common dentry for all\n   pipes/sockets) may need to change prototype of this method, but we now\n   use : char *d_dname(struct dentry *dentry, char *buffer, int buflen);\n\n2) Adds a dynamic_dname() helper function that eases d_dname() implementations\n\n3) Defines d_dname method for sockets : No more sprintf() at socket\n   creation.  This is delayed up to the moment someone does an access to\n   /proc/pid/fd/...\n\n4) Defines d_dname method for pipes : No more sprintf() at pipe\n   creation.  This is delayed up to the moment someone does an access to\n   /proc/pid/fd/...\n\nA benchmark consisting of 1.000.000 calls to pipe()/close()/close() gives a\n*nice* speedup on my Pentium(M) 1.6 Ghz :\n\n3.090 s instead of 3.450 s\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "50953fe9e00ebbeffa032a565ab2f08312d51a87",
      "tree": "9f95f56f0b51600959a76cd88ce17f6e9c7a98a3",
      "parents": [
        "4b1d89290b62bb2db476c94c82cf7442aab440c8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:50:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "slab allocators: Remove SLAB_DEBUG_INITIAL flag\n\nI have never seen a use of SLAB_DEBUG_INITIAL.  It is only supported by\nSLAB.\n\nI think its purpose was to have a callback after an object has been freed\nto verify that the state is the constructor state again?  The callback is\nperformed before each freeing of an object.\n\nI would think that it is much easier to check the object state manually\nbefore the free.  That also places the check near the code object\nmanipulation of the object.\n\nAlso the SLAB_DEBUG_INITIAL callback is only performed if the kernel was\ncompiled with SLAB debugging on.  If there would be code in a constructor\nhandling SLAB_DEBUG_INITIAL then it would have to be conditional on\nSLAB_DEBUG otherwise it would just be dead code.  But there is no such code\nin the kernel.  I think SLUB_DEBUG_INITIAL is too problematic to make real\nuse of, difficult to understand and there are easier ways to accomplish the\nsame effect (i.e.  add debug code before kfree).\n\nThere is a related flag SLAB_CTOR_VERIFY that is frequently checked to be\nclear in fs inode caches.  Remove the pointless checks (they would even be\npointless without removeal of SLAB_DEBUG_INITIAL) from the fs constructors.\n\nThis is the last slab flag that SLUB did not support.  Remove the check for\nunimplemented flags from SLUB.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7c81fd8bfbaa9732eca142350de5154da6919411",
      "tree": "4187e8a4921be94acfb8ef9542f4badaee58de67",
      "parents": [
        "92f37fd2ee805aa77925c1e64fd56088b46094fc"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Sat Mar 10 00:39:35 2007 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:24:22 2007 -0700"
      },
      "message": "[SOCKET]: Export __sock_recv_timestamp\n\nKernel: arch/x86_64/boot/bzImage is ready  (#2)\n  MODPOST 1816 modules\nWARNING: \"__sock_recv_timestamp\" [net/sctp/sctp.ko] undefined!\nWARNING: \"__sock_recv_timestamp\" [net/packet/af_packet.ko] undefined!\nWARNING: \"__sock_recv_timestamp\" [net/key/af_key.ko] undefined!\nWARNING: \"__sock_recv_timestamp\" [net/ipv6/ipv6.ko] undefined!\nWARNING: \"__sock_recv_timestamp\" [net/atm/atm.ko] undefined!\nmake[2]: *** [__modpost] Error 1\nmake[1]: *** [modules] Error 2\nmake: *** [_all] Error 2\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "92f37fd2ee805aa77925c1e64fd56088b46094fc",
      "tree": "8251c38b83ab362116dac89d94412ce229b42831",
      "parents": [
        "c7a3c5da35055e2fa97ed4f0da3eec4bd0ef4c38"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Mar 25 22:14:49 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:24:21 2007 -0700"
      },
      "message": "[NET]: Adding SO_TIMESTAMPNS / SCM_TIMESTAMPNS support\n\nNow that network timestamps use ktime_t infrastructure, we can add a new\nSOL_SOCKET sockopt  SO_TIMESTAMPNS.\n\nThis command is similar to SO_TIMESTAMP, but permits transmission of\na \u0027timespec struct\u0027 instead of a \u0027timeval struct\u0027 control message.\n(nanosecond resolution instead of microsecond)\n\nControl message is labelled SCM_TIMESTAMPNS instead of SCM_TIMESTAMP\n\nA socket cannot mix SO_TIMESTAMP and SO_TIMESTAMPNS : the two modes are\nmutually exclusive.\n\nsock_recv_timestamp() became too big to be fully inlined so I added a\n__sock_recv_timestamp() helper function.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCC: linux-arch@vger.kernel.org\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e71a4783aae059931f63b2d4e7013e36529badef",
      "tree": "d9c2bad69b8d0512e12c8ff786237319990fbd00",
      "parents": [
        "add459aa1afe05472abc96f6a29aefd0c84e73d6"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@linux-foundation.org",
        "time": "Tue Apr 10 20:10:33 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:24:09 2007 -0700"
      },
      "message": "[NET] core: whitespace cleanup\n\nFix whitespace around keywords. Fix indentation especially of switch\nstatements.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "79f4f6428f6ceb9af57330092271bda028c23a96",
      "tree": "e73a452517b3e6f8cc5c583a3e0174b039ccc5a2",
      "parents": [
        "165de5b7f2719c1984956504128545839762d635"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Mon Mar 26 14:09:52 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 26 14:09:52 2007 -0700"
      },
      "message": "[NET]: Correct accept(2) recovery after sock_attach_fd()\n\n* d_alloc() in sock_attach_fd() fails leaving -\u003ef_dentry of new file NULL\n* bail out to out_fd label, doing fput()/__fput() on new file\n* but __fput() assumes valid -\u003ef_dentry and dereferences it\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "db3495099d3d52854b13874905af6e40a91f4721"
}
