)]}'
{
  "log": [
    {
      "commit": "cf778b00e96df6d64f8e21b8395d1f8a859ecdc7",
      "tree": "4cc157d564bd65d687bdf722af3202e9e277ea98",
      "parents": [
        "9ee6045f09a7875ebe55b9942b232a19076b157b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jan 12 04:41:32 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jan 12 12:26:56 2012 -0800"
      },
      "message": "net: reintroduce missing rcu_assign_pointer() calls\n\ncommit a9b3cd7f32 (rcu: convert uses of rcu_assign_pointer(x, NULL) to\nRCU_INIT_POINTER) did a lot of incorrect changes, since it did a\ncomplete conversion of rcu_assign_pointer(x, y) to RCU_INIT_POINTER(x,\ny).\n\nWe miss needed barriers, even on x86, when y is not NULL.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCC: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9753dfe19a85e7e45a34a56f4cb2048bb4f50e27",
      "tree": "c017a1b4a70b8447c71b01d8b320e071546b5c9d",
      "parents": [
        "edf7c8148ec40c0fd27c0ef3f688defcc65e3913",
        "9f42f126154786e6e76df513004800c8c633f020"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 06 17:22:09 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 06 17:22:09 2012 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1958 commits)\n  net: pack skb_shared_info more efficiently\n  net_sched: red: split red_parms into parms and vars\n  net_sched: sfq: extend limits\n  cnic: Improve error recovery on bnx2x devices\n  cnic: Re-init dev-\u003estats_addr after chip reset\n  net_sched: Bug in netem reordering\n  bna: fix sparse warnings/errors\n  bna: make ethtool_ops and strings const\n  xgmac: cleanups\n  net: make ethtool_ops const\n  vmxnet3\" make ethtool ops const\n  xen-netback: make ops structs const\n  virtio_net: Pass gfp flags when allocating rx buffers.\n  ixgbe: FCoE: Add support for ndo_get_fcoe_hbainfo() call\n  netdev: FCoE: Add new ndo_get_fcoe_hbainfo() call\n  igb: reset PHY after recovering from PHY power down\n  igb: add basic runtime PM support\n  igb: Add support for byte queue limits.\n  e1000: cleanup CE4100 MDIO registers access\n  e1000: unmap ce4100_gbe_mdio_base_virt in e1000_remove\n  ...\n"
    },
    {
      "commit": "07d106d0a33d6063d2061305903deb02489eba20",
      "tree": "6f257f877a9c2e653ca0515253e930fa6606239a",
      "parents": [
        "805a6af8dba5dfdd35ec35dc52ec0122400b2610"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 05 15:40:12 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 05 15:40:12 2012 -0800"
      },
      "message": "vfs: fix up ENOIOCTLCMD error handling\n\nWe\u0027re doing some odd things there, which already messes up various users\n(see the net/socket.c code that this removes), and it was going to add\nyet more crud to the block layer because of the incorrect error code\ntranslation.\n\nENOIOCTLCMD is not an error return that should be returned to user mode\nfrom the \"ioctl()\" system call, but it should *not* be translated as\nEINVAL (\"Invalid argument\").  It should be translated as ENOTTY\n(\"Inappropriate ioctl for device\").\n\nThat EINVAL confusion has apparently so permeated some code that the\nblock layer actually checks for it, which is sad.  We continue to do so\nfor now, but add a big comment about how wrong that is, and we should\nremove it entirely eventually.  In the meantime, this tries to keep the\nchanges localized to just the EINVAL -\u003e ENOTTY fix, and removing code\nthat makes it harder to do the right thing.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "55664f324c2a1a6386dc88492c5c94aa3d336b93",
      "tree": "a1859e049a47b3bb207882e4b9db126987f2ead9",
      "parents": [
        "3a73e49caa75928149ea54f570f8afb5f6f4774d"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Tue Jan 03 12:04:51 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 04 14:09:10 2012 -0500"
      },
      "message": "ethtool: Allow drivers to select RX NFC rule locations\n\nDefine special location values for RX NFC that request the driver to\nselect the actual rule location.  This allows for implementation on\ndevices that use hash-based filter lookup, whereas currently the API is\nmore suited to devices with TCAM lookup or linear search.\n\nIn ethtool_set_rxnfc() and the compat wrapper ethtool_ioctl(), copy\nthe structure back to user-space after insertion so that the actual\nlocation is returned.\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5bc1421e34ecfe0bd4b26dc3232b7d5e25179144",
      "tree": "783ed95187915c06757a260b637308919b35d5a0",
      "parents": [
        "202ff1c26c768efeead20b388556eda265dc8352"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Tue Nov 22 05:10:51 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 22 15:22:23 2011 -0500"
      },
      "message": "net: add network priority cgroup infrastructure (v4)\n\nThis patch adds in the infrastructure code to create the network priority\ncgroup.  The cgroup, in addition to the standard processes file creates two\ncontrol files:\n\n1) prioidx - This is a read-only file that exports the index of this cgroup.\nThis is a value that is both arbitrary and unique to a cgroup in this subsystem,\nand is used to index the per-device priority map\n\n2) priomap - This is a writeable file.  On read it reports a table of 2-tuples\n\u003cname:priority\u003e where name is the name of a network interface and priority is\nindicates the priority assigned to frames egresessing on the named interface and\noriginating from a pid in this cgroup\n\nThis cgroup allows for skb priority to be set prior to a root qdisc getting\nselected. This is benenficial for DCB enabled systems, in that it allows for any\napplication to use dcb configured priorities so without application modification\n\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: John Fastabend \u003cjohn.r.fastabend@intel.com\u003e\nCC: Robert Love \u003crobert.w.love@intel.com\u003e\nCC: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6e3e939f3b1bf8534b32ad09ff199d88800835a0",
      "tree": "78ec0638efbade2fdb0bebb7bad71410ded2e6c6",
      "parents": [
        "4fdbff0770bea059621bc4906fb7c7f5879f3ae1"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Wed Nov 09 10:15:42 2011 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Nov 09 16:01:02 2011 -0500"
      },
      "message": "net: add wireless TX status socket option\n\nThe 802.1X EAPOL handshake hostapd does requires\nknowing whether the frame was ack\u0027ed by the peer.\nCurrently, we fudge this pretty badly by not even\ntransmitting the frame as a normal data frame but\ninjecting it with radiotap and getting the status\nout of radiotap monitor as well. This is rather\ncomplex, confuses users (mon.wlan0 presence) and\ndoesn\u0027t work with all hardware.\n\nTo get rid of that hack, introduce a real wifi TX\nstatus option for data frame transmissions.\n\nThis works similar to the existing TX timestamping\nin that it reflects the SKB back to the socket\u0027s\nerror queue with a SCM_WIFI_STATUS cmsg that has\nan int indicating ACK status (0/1).\n\nSince it is possible that at some point we will\nwant to have TX timestamping and wifi status in a\nsingle errqueue SKB (there\u0027s little point in not\ndoing that), redefine SO_EE_ORIGIN_TIMESTAMPING\nto SO_EE_ORIGIN_TXSTATUS which can collect more\nthan just the timestamp; keep the old constant\nas an alias of course. Currently the internal APIs\ndon\u0027t make that possible, but it wouldn\u0027t be hard\nto split them up in a way that makes it possible.\n\nThanks to Neil Horman for helping me figure out\nthe functions that add the control messages.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "8decf868790b48a727d7e7ca164f2bcd3c1389c0",
      "tree": "b759a5f861f842af7ea76f9011b579d06e9d5508",
      "parents": [
        "3fc72370186be2f9d4d6ef06d99e1caa5d92c564",
        "d93dc5c4478c1fd5de85a3e8aece9aad7bbae044"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 22 03:23:13 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 22 03:23:13 2011 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of github.com:davem330/net\n\nConflicts:\n\tMAINTAINERS\n\tdrivers/net/Kconfig\n\tdrivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c\n\tdrivers/net/ethernet/broadcom/tg3.c\n\tdrivers/net/wireless/iwlwifi/iwl-pci.c\n\tdrivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c\n\tdrivers/net/wireless/rt2x00/rt2800usb.c\n\tdrivers/net/wireless/wl12xx/main.c\n"
    },
    {
      "commit": "bc909d9ddbf7778371e36a651d6e4194b1cc7d4c",
      "tree": "45fb13261b012c61a64713ee13f5c7fe60a046dd",
      "parents": [
        "c6f59d13e24187ff95427a9f4a5a7e14fb8faf5a"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Wed Aug 24 19:45:03 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 24 19:45:03 2011 -0700"
      },
      "message": "sendmmsg/sendmsg: fix unsafe user pointer access\n\nDereferencing a user pointer directly from kernel-space without going\nthrough the copy_from_user family of functions is a bad idea. Two of\nsuch usages can be found in the sendmsg code path called from sendmmsg,\nadded by\n\ncommit c71d8ebe7a4496fb7231151cb70a6baa0cb56f9a upstream.\ncommit 5b47b8038f183b44d2d8ff1c7d11a5c1be706b34 in the 3.0-stable tree.\n\nUsages are performed through memcmp() and memcpy() directly. Fix those\nby using the already copied msg_sys structure instead of the __user *msg\nstructure. Note that msg_sys can be set to NULL by verify_compat_iovec()\nor verify_iovec(), which requires additional NULL pointer checks.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: David Goulet \u003cdgoulet@ev0ke.net\u003e\nCC: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCC: Anton Blanchard \u003canton@samba.org\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: stable \u003cstable@kernel.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "19fd61785a580c60cba900c5171bfadb57dd5056",
      "tree": "1e491fb014be0dc03f4b6755bb94e73afd38c455",
      "parents": [
        "57569d0e12eaf31717e295960cd2a26f626c8e5b",
        "8028837d71ba9904b17281b40f94b93e947fbe38"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 07 23:20:26 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 07 23:20:26 2011 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net\n"
    },
    {
      "commit": "c71d8ebe7a4496fb7231151cb70a6baa0cb56f9a",
      "tree": "2b0d63c14a5e565e97c2b5deb0fc0b5c1890bb08",
      "parents": [
        "98382f419f32d2c12d021943b87dea555677144b"
      ],
      "author": {
        "name": "Tetsuo Handa",
        "email": "penguin-kernel@I-love.SAKURA.ne.jp",
        "time": "Thu Aug 04 14:07:40 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 05 03:31:03 2011 -0700"
      },
      "message": "net: Fix security_socket_sendmsg() bypass problem.\n\nThe sendmmsg() introduced by commit 228e548e \"net: Add sendmmsg socket system\ncall\" is capable of sending to multiple different destination addresses.\n\nSMACK is using destination\u0027s address for checking sendmsg() permission.\nHowever, security_socket_sendmsg() is called for only once even if multiple\ndifferent destination addresses are passed to sendmmsg().\n\nTherefore, we need to call security_socket_sendmsg() for each destination\naddress rather than only the first destination address.\n\nSince calling security_socket_sendmsg() every time when only single destination\naddress was passed to sendmmsg() is a waste of time, omit calling\nsecurity_socket_sendmsg() unless destination address of previous datagram and\nthat of current datagram differs.\n\nSigned-off-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nAcked-by: Anton Blanchard \u003canton@samba.org\u003e\nCc: stable \u003cstable@kernel.org\u003e [3.0+]\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "98382f419f32d2c12d021943b87dea555677144b",
      "tree": "d07b99ec8eec119b53ddc2223de9027d7a8c0263",
      "parents": [
        "728ffb86f10873aaf4abd26dde691ee40ae731fe"
      ],
      "author": {
        "name": "Anton Blanchard",
        "email": "anton@samba.org",
        "time": "Thu Aug 04 14:07:39 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 05 03:31:03 2011 -0700"
      },
      "message": "net: Cap number of elements for sendmmsg\n\nTo limit the amount of time we can spend in sendmmsg, cap the\nnumber of elements to UIO_MAXIOV (currently 1024).\n\nFor error handling an application using sendmmsg needs to retry at\nthe first unsent message, so capping is simpler and requires less\napplication logic than returning EINVAL.\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\u003e\nCc: stable \u003cstable@kernel.org\u003e [3.0+]\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "728ffb86f10873aaf4abd26dde691ee40ae731fe",
      "tree": "62bdf029ab504ef38ab664436940e0b262327a86",
      "parents": [
        "d3e614577198757d5854caa912e88f2d4296479b"
      ],
      "author": {
        "name": "Anton Blanchard",
        "email": "anton@samba.org",
        "time": "Thu Aug 04 14:07:38 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 05 03:31:02 2011 -0700"
      },
      "message": "net: sendmmsg should only return an error if no messages were sent\n\nsendmmsg uses a similar error return strategy as recvmmsg but it\nturns out to be a confusing way to communicate errors.\n\nThe current code stores the error code away and returns it on the next\nsendmmsg call. This means a call with completely valid arguments could\nget an error from a previous call.\n\nChange things so we only return an error if no datagrams could be sent.\nIf less than the requested number of messages were sent, the application\nmust retry starting at the first failed one and if the problem is\npersistent the error will be returned.\n\nThis matches the behaviour of other syscalls like read/write - it\nis not an error if less than the requested number of elements are sent.\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\u003e\nCc: stable \u003cstable@kernel.org\u003e [3.0+]\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a9b3cd7f323b2e57593e7215362a7b02fc933e3a",
      "tree": "eba1741956aef3015d5b1a07253bf93c4c1bc7df",
      "parents": [
        "76f793e3a47139d340185cbc1a314740c09b13d3"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Mon Aug 01 16:19:00 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Aug 02 04:29:23 2011 -0700"
      },
      "message": "rcu: convert uses of rcu_assign_pointer(x, NULL) to RCU_INIT_POINTER\n\nWhen assigning a NULL value to an RCU protected pointer, no barrier\nis needed. The rcu_assign_pointer, used to handle that but will soon\nchange to not handle the special case.\n\nConvert all rcu_assign_pointer of NULL value.\n\n//smpl\n@@ expression P; @@\n\n- rcu_assign_pointer(P, NULL)\n+ RCU_INIT_POINTER(P, NULL)\n\n// \u003c/smpl\u003e\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d5eab9152a3b4ce962c02ad0a0e4d0ec94aadd92",
      "tree": "3147f8de2805da0f026ea18103a9be46f3bc2a18",
      "parents": [
        "6140333d3656f62ac7e6a5af87e7fe92cfb8d655",
        "a051294423b015c5c89f2ed78f7fe0893b775098"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 28 05:58:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 28 05:58:19 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (32 commits)\n  tg3: Remove 5719 jumbo frames and TSO blocks\n  tg3: Break larger frags into 4k chunks for 5719\n  tg3: Add tx BD budgeting code\n  tg3: Consolidate code that calls tg3_tx_set_bd()\n  tg3: Add partial fragment unmapping code\n  tg3: Generalize tg3_skb_error_unmap()\n  tg3: Remove short DMA check for 1st fragment\n  tg3: Simplify tx bd assignments\n  tg3: Reintroduce tg3_tx_ring_info\n  ASIX: Use only 11 bits of header for data size\n  ASIX: Simplify condition in rx_fixup()\n  Fix cdc-phonet build\n  bonding: reduce noise during init\n  bonding: fix string comparison errors\n  net: Audit drivers to identify those needing IFF_TX_SKB_SHARING cleared\n  net: add IFF_SKB_TX_SHARED flag to priv_flags\n  net: sock_sendmsg_nosec() is static\n  forcedeth: fix vlans\n  gianfar: fix bug caused by 87c288c6e9aa31720b72e2bc2d665e24e1653c3e\n  gro: Only reset frag0 when skb can be pulled\n  ...\n"
    },
    {
      "commit": "894dc24ce75aa238ce96422a36b1537ccf2d8831",
      "tree": "c930e1d37236fb7424295f12da7f84ac65f8a1a1",
      "parents": [
        "0891b0e08937aaec2c4734acb94c5ff8042313bb"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jul 26 02:39:41 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 27 22:39:30 2011 -0700"
      },
      "message": "net: sock_sendmsg_nosec() is static\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a209dfc7b0d94bd6fa94553c097836a2e6d0f0ba",
      "tree": "7dacc92b08264c675a0dfcbae83982b7d3ad5135",
      "parents": [
        "5b9f4567726513a359e70f85029482c7c3714dbd"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jul 26 11:36:34 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 12:57:09 2011 -0400"
      },
      "message": "vfs: dont chain pipe/anon/socket on superblock s_inodes list\n\nWorkloads using pipes and sockets hit inode_sb_list_lock contention.\n\nsuperblock s_inodes list is needed for quota, dirty, pagecache and\nfsnotify management. pipe/anon/socket fs are clearly not candidates for\nthese.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "06f4e926d256d902dd9a53dcb400fd74974ce087",
      "tree": "0b438b67f5f0eff6fd617bc497a9dace6164a488",
      "parents": [
        "8e7bfcbab3825d1b404d615cb1b54f44ff81f981",
        "d93515611bbc70c2fe4db232e5feb448ed8e4cc9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 20 13:43:21 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 20 13:43:21 2011 -0700"
      },
      "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: (1446 commits)\n  macvlan: fix panic if lowerdev in a bond\n  tg3: Add braces around 5906 workaround.\n  tg3: Fix NETIF_F_LOOPBACK error\n  macvlan: remove one synchronize_rcu() call\n  networking: NET_CLS_ROUTE4 depends on INET\n  irda: Fix error propagation in ircomm_lmp_connect_response()\n  irda: Kill set but unused variable \u0027bytes\u0027 in irlan_check_command_param()\n  irda: Kill set but unused variable \u0027clen\u0027 in ircomm_connect_indication()\n  rxrpc: Fix set but unused variable \u0027usage\u0027 in rxrpc_get_transport()\n  be2net: Kill set but unused variable \u0027req\u0027 in lancer_fw_download()\n  irda: Kill set but unused vars \u0027saddr\u0027 and \u0027daddr\u0027 in irlan_provider_connect_indication()\n  atl1c: atl1c_resume() is only used when CONFIG_PM_SLEEP is defined.\n  rxrpc: Fix set but unused variable \u0027usage\u0027 in rxrpc_get_peer().\n  rxrpc: Kill set but unused variable \u0027local\u0027 in rxrpc_UDP_error_handler()\n  rxrpc: Kill set but unused variable \u0027sp\u0027 in rxrpc_process_connection()\n  rxrpc: Kill set but unused variable \u0027sp\u0027 in rxrpc_rotate_tx_window()\n  pkt_sched: Kill set but unused variable \u0027protocol\u0027 in tc_classify()\n  isdn: capi: Use pr_debug() instead of ifdefs.\n  tg3: Update version to 3.119\n  tg3: Apply rx_discards fix to 5719/5720\n  ...\n\nFix up trivial conflicts in arch/x86/Kconfig and net/mac80211/agg-tx.c\nas per Davem.\n"
    },
    {
      "commit": "9cbc94eabb0791906051bbfac024ef2c2be8e079",
      "tree": "41ba194e687c6c60f5c883f98737ac83257d0c00",
      "parents": [
        "1d1652cbdb9885e4d73972263e4cdbe1b0beebfe",
        "7cc31a9ae1477abc79d5992b3afe889f25c50c99"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue May 17 17:33:11 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue May 17 17:33:11 2011 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/vmxnet3/vmxnet3_ethtool.c\n\tnet/core/dev.c\n"
    },
    {
      "commit": "b9eb8b8752804cecbacdb4d24b52e823cf07f107",
      "tree": "a8f57f2fc019c8bd7249762d367e717d5d93fc29",
      "parents": [
        "30b9284db3c77a5e20bb826cd1b66ed7b26cb726"
      ],
      "author": {
        "name": "Anton Blanchard",
        "email": "anton@samba.org",
        "time": "Tue May 17 15:38:57 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue May 17 15:38:57 2011 -0400"
      },
      "message": "net: recvmmsg: Strip MSG_WAITFORONE when calling recvmsg\n\nrecvmmsg fails on a raw socket with EINVAL. The reason for this is\npacket_recvmsg checks the incoming flags:\n\n        err \u003d -EINVAL;\n        if (flags \u0026 ~(MSG_PEEK|MSG_DONTWAIT|MSG_TRUNC|MSG_CMSG_COMPAT|MSG_ERRQUEUE))\n                goto out;\n\nThis patch strips out MSG_WAITFORONE when calling recvmmsg which\nfixes the issue.\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\u003e\nCc: stable@kernel.org [2.6.34+]\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "61845220248c2368095158420b029683fad5570a",
      "tree": "69bc61277344ef41d68b21c945c982c1129b8f64",
      "parents": [
        "7e113a9c759d1918fcbe456c5eb8890a4da62eaa"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Fri Mar 18 12:10:25 2011 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat May 07 22:51:10 2011 -0700"
      },
      "message": "net,rcu: convert call_rcu(wq_free_rcu) to kfree_rcu()\n\nThe rcu callback wq_free_rcu() just calls a kfree(),\nso we use kfree_rcu() instead of the call_rcu(wq_free_rcu).\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "228e548e602061b08ee8e8966f567c12aa079682",
      "tree": "4c79ecf071d6174d42da1557812a4646d0aaa5af",
      "parents": [
        "1c5cae815d19ffe02bdfda1260949ef2b1806171"
      ],
      "author": {
        "name": "Anton Blanchard",
        "email": "anton@samba.org",
        "time": "Mon May 02 20:21:35 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 05 11:10:14 2011 -0700"
      },
      "message": "net: Add sendmmsg socket system call\n\nThis patch adds a multiple message send syscall and is the send\nversion of the existing recvmmsg syscall. This is heavily\nbased on the patch by Arnaldo that added recvmmsg.\n\nI wrote a microbenchmark to test the performance gains of using\nthis new syscall:\n\nhttp://ozlabs.org/~anton/junkcode/sendmmsg_test.c\n\nThe test was run on a ppc64 box with a 10 Gbit network card. The\nbenchmark can send both UDP and RAW ethernet packets.\n\n64B UDP\n\nbatch   pkts/sec\n1       804570\n2       872800 (+ 8 %)\n4       916556 (+14 %)\n8       939712 (+17 %)\n16      952688 (+18 %)\n32      956448 (+19 %)\n64      964800 (+20 %)\n\n64B raw socket\n\nbatch   pkts/sec\n1       1201449\n2       1350028 (+12 %)\n4       1461416 (+22 %)\n8       1513080 (+26 %)\n16      1541216 (+28 %)\n32      1553440 (+29 %)\n64      1557888 (+30 %)\n\nWe see a 20% improvement in throughput on UDP send and 30%\non raw socket send.\n\n[ Add sparc syscall entries. -DaveM ]\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1c01a80cfec6f806246f31ff2680cd3639b30e67",
      "tree": "0b554aad2ec1da71ecf6339d4ba51617bfe1dc3c",
      "parents": [
        "c44d79950b2daa1025e62eede73e4e4a274d1ef3",
        "4a9f65f6304a00f6473e83b19c1e83caa1e42530"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 11 13:44:25 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 11 13:44:25 2011 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/smsc911x.c\n"
    },
    {
      "commit": "127fe533ae56d7f4e7b5011869870982eba25723",
      "tree": "05a0752df856b975524fb1dbb302c2c84253aab9",
      "parents": [
        "5d9f11cf5038587cc53975deb8beaa1a876a7a7b"
      ],
      "author": {
        "name": "Alexander Duyck",
        "email": "alexander.h.duyck@intel.com",
        "time": "Fri Apr 08 18:01:59 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 11 13:20:49 2011 -0700"
      },
      "message": "v3 ethtool: add ntuple flow specifier data to network flow classifier\n\nThis change is meant to add an ntuple data extensions to the rx network flow\nclassification specifiers.  The idea is to allow ntuple to be displayed via\nthe network flow classification interface.\n\nThe first patch had some left over stuff from the original flow extension\nflags I had added.  That bit is removed in this patch.\n\nThe second had some left over comments that stated we ignored bits in the\nmasks when we actually match them.\n\nThis work is based on input from Ben Hutchings.\n\nSigned-off-by: Alexander Duyck \u003calexander.h.duyck@intel.com\u003e\nReviewed-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "3a7da39d165e0c363c294feec119db1427032afd",
      "tree": "901e54990fdd90d6f90d27533c36e61858216e34",
      "parents": [
        "5e5069b41d5b82bcadc1dbf73f48476b428c102f"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Thu Mar 17 07:34:32 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 18 15:13:11 2011 -0700"
      },
      "message": "ethtool: Compat handling for struct ethtool_rxnfc\n\nThis structure was accidentally defined such that its layout can\ndiffer between 32-bit and 64-bit processes.  Add compat structure\ndefinitions and an ioctl wrapper function.\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nAcked-by: Alexander Duyck \u003calexander.h.duyck@intel.com\u003e\nCc: stable@kernel.org [2.6.30+]\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c3f52ae6a378398127acb845087ddb9e8b67493b",
      "tree": "fb68840354fe33891f7e0baf035b5a1d8dbee98f",
      "parents": [
        "e13e02a3c68d899169c78d9a18689bd73491d59a"
      ],
      "author": {
        "name": "stephen hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Feb 23 09:06:48 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 23 14:11:30 2011 -0800"
      },
      "message": "socket: suppress sparse warnings\n\nUse __force to quiet sparse warnings for cases where the code\nis simulating user space pointers.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "eaefd1105bc431ef329599e307a07f2a36ae7872",
      "tree": "658eeed417654c8f6015d4d5f957f5a1b5e9521f",
      "parents": [
        "04cfa852ff8dab923640500ee850d19e75bacabc"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Feb 18 03:26:36 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 22 10:19:31 2011 -0800"
      },
      "message": "net: add __rcu annotations to sk_wq and wq\n\nAdd proper RCU annotations/verbs to sk_wq and wq members\n\nFix __sctp_write_space() sk_sleep() abuse (and sock-\u003ewq access)\n\nFix sunrpc sk_sleep() abuse too\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c74a1cbb3cac348f276fabc381758f5b0b4713b2",
      "tree": "5b403590e41b5e91fce25c69d50a23b920b3497f",
      "parents": [
        "f772c4a6a320ec25d94ba951881474eeef1b7f48"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 16:59:34 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:03:43 2011 -0500"
      },
      "message": "pass default dentry_operations to mount_pseudo()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b4a45f5fe8078bfc10837dbd5b98735058bc4698",
      "tree": "df6f13a27610a3ec7eb4a661448cd779a8f84c79",
      "parents": [
        "01539ba2a706ab7d35fc0667dff919ade7f87d63",
        "b3e19d924b6eaf2ca7d22cba99a517c5171007b6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 08:56:33 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 08:56:33 2011 -0800"
      },
      "message": "Merge branch \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin\n\n* \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin: (57 commits)\n  fs: scale mntget/mntput\n  fs: rename vfsmount counter helpers\n  fs: implement faster dentry memcmp\n  fs: prefetch inode data in dcache lookup\n  fs: improve scalability of pseudo filesystems\n  fs: dcache per-inode inode alias locking\n  fs: dcache per-bucket dcache hash locking\n  bit_spinlock: add required includes\n  kernel: add bl_list\n  xfs: provide simple rcu-walk ACL implementation\n  btrfs: provide simple rcu-walk ACL implementation\n  ext2,3,4: provide simple rcu-walk ACL implementation\n  fs: provide simple rcu-walk generic_check_acl implementation\n  fs: provide rcu-walk aware permission i_ops\n  fs: rcu-walk aware d_revalidate method\n  fs: cache optimise dentry and inode for rcu-walk\n  fs: dcache reduce branches in lookup path\n  fs: dcache remove d_mounted\n  fs: fs_struct use seqlock\n  fs: rcu-walk for path lookup\n  ...\n"
    },
    {
      "commit": "b3e19d924b6eaf2ca7d22cba99a517c5171007b6",
      "tree": "8c1fa4074114a883a4e2de2f7d12eb29ed91bdf1",
      "parents": [
        "c6653a838b1b2738561aff0b8c0f62a9b714bdd9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:11 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:33 2011 +1100"
      },
      "message": "fs: scale mntget/mntput\n\nThe problem that this patch aims to fix is vfsmount refcounting scalability.\nWe need to take a reference on the vfsmount for every successful path lookup,\nwhich often go to the same mount point.\n\nThe fundamental difficulty is that a \"simple\" reference count can never be made\nscalable, because any time a reference is dropped, we must check whether that\nwas the last reference. To do that requires communication with all other CPUs\nthat may have taken a reference count.\n\nWe can make refcounts more scalable in a couple of ways, involving keeping\ndistributed counters, and checking for the global-zero condition less\nfrequently.\n\n- check the global sum once every interval (this will delay zero detection\n  for some interval, so it\u0027s probably a showstopper for vfsmounts).\n\n- keep a local count and only taking the global sum when local reaches 0 (this\n  is difficult for vfsmounts, because we can\u0027t hold preempt off for the life of\n  a reference, so a counter would need to be per-thread or tied strongly to a\n  particular CPU which requires more locking).\n\n- keep a local difference of increments and decrements, which allows us to sum\n  the total difference and hence find the refcount when summing all CPUs. Then,\n  keep a single integer \"long\" refcount for slow and long lasting references,\n  and only take the global sum of local counters when the long refcount is 0.\n\nThis last scheme is what I implemented here. Attached mounts and process root\nand working directory references are \"long\" references, and everything else is\na short reference.\n\nThis allows scalable vfsmount references during path walking over mounted\nsubtrees and unattached (lazy umounted) mounts with processes still running\nin them.\n\nThis results in one fewer atomic op in the fastpath: mntget is now just a\nper-CPU inc, rather than an atomic inc; and mntput just requires a spinlock\nand non-atomic decrement in the common case. However code is otherwise bigger\nand heavier, so single threaded performance is basically a wash.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "4b936885ab04dc6e0bb0ef35e0e23c1a7364d9e5",
      "tree": "a0173d27c1ce39f173be404d269c2f15144072ab",
      "parents": [
        "873feea09ebc980cbd3631b767356ce1eee65ec1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:07 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:32 2011 +1100"
      },
      "message": "fs: improve scalability of pseudo filesystems\n\nRegardless of how much we possibly try to scale dcache, there is likely\nalways going to be some fundamental contention when adding or removing children\nunder the same parent. Pseudo filesystems do not seem need to have connected\ndentries because by definition they are disconnected.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "ff0c7d15f9787b7e8c601533c015295cc68329f8",
      "tree": "e3db53950b8ed78e542ab35a3cd3a6eaee26eccd",
      "parents": [
        "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:50 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: avoid inode RCU freeing for pseudo fs\n\nPseudo filesystems that don\u0027t put inode on RCU list or reachable by\nrcu-walk dentries do not need to RCU free their inodes.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b4aa9e05a61b845541fa6f5b1d246976922601f0",
      "tree": "ca94478c3df281ab76a3399f5ba6341ade3f5791",
      "parents": [
        "1dc0f3c54ce1df957f99c17b145488fd03eb1a59",
        "4b8fe66300acb2fba8b16d62606e0d30204022fc"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 17 12:27:22 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 17 12:27:22 2010 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/bnx2x/bnx2x.h\n\tdrivers/net/wireless/iwlwifi/iwl-1000.c\n\tdrivers/net/wireless/iwlwifi/iwl-6000.c\n\tdrivers/net/wireless/iwlwifi/iwl-core.h\n\tdrivers/vhost/vhost.c\n"
    },
    {
      "commit": "c1249c0aae4c93a753c70496ab2e9a51430a6f02",
      "tree": "4e2905d99365e3d7cc1a09cd8681b1e7dd31b867",
      "parents": [
        "e4fbce740f078bbc925ba5c86648d9c883968479"
      ],
      "author": {
        "name": "Martin Lucina",
        "email": "mato@kotelna.sk",
        "time": "Fri Dec 10 00:04:05 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 10 11:13:18 2010 -0800"
      },
      "message": "net: Document the kernel_recvmsg() function\n\nSigned-off-by: Martin Lucina \u003cmato@kotelna.sk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "190683a9d5457e6d962c232ffbecac3ab158dddd",
      "tree": "85dfd126daa763f858787b3a9aa769efb7f0718a",
      "parents": [
        "e85eb11782259dc39502807f3ec903a7b82b1bab"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Nov 10 10:50:44 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Nov 12 13:27:25 2010 -0800"
      },
      "message": "net: net_families __rcu annotations\n\nUse modern RCU API / annotations for net_families array.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3985c7ce85039adacdf882904ca096f091d39346",
      "tree": "afaf4161c4c3d9516cc09295eb30c0e22a8c3008",
      "parents": [
        "fcf744a96c66ca6ad7301a372034b771e57f30c4",
        "ce384d91cd7a4269a1ed5d4307a70aa4c6fa14f2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 18:42:58 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 18:42:58 2010 -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  isdn: mISDN: socket: fix information leak to userland\n  netdev: can: Change mail address of Hans J. Koch\n  pcnet_cs: add new_id\n  net: Truncate recvfrom and sendto length to INT_MAX.\n  RDS: Let rds_message_alloc_sgs() return NULL\n  RDS: Copy rds_iovecs into kernel memory instead of rereading from userspace\n  RDS: Clean up error handling in rds_cmsg_rdma_args\n  RDS: Return -EINVAL if rds_rdma_pages returns an error\n  net: fix rds_iovec page count overflow\n  can: pch_can: fix section mismatch warning by using a whitelisted name\n  can: pch_can: fix sparse warning\n  netxen_nic: Fix the tx queue manipulation bug in netxen_nic_probe\n  ip_gre: fix fallback tunnel setup\n  vmxnet: trivial annotation of protocol constant\n  vmxnet3: remove unnecessary byteswapping in BAR writing macros\n  ipv6/udp: report SndbufErrors and RcvbufErrors\n  phy/marvell: rename 88ec048 to 88e1318s and fix mscr1 addr\n"
    },
    {
      "commit": "253eacc070b114c2ec1f81b067d2fed7305467b0",
      "tree": "cf55d167c9a1a3fac2b7796f046674a53fbf47b0",
      "parents": [
        "d139ff0907dac9ef72fb2cf301e345bac3aec42f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 16:43:10 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Oct 30 16:44:07 2010 -0700"
      },
      "message": "net: Truncate recvfrom and sendto length to INT_MAX.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "51139adac92f7160ad3ca1cab2de1b4b8d19dc96",
      "tree": "ea12df0927809e8d5333e82d51cbdb96288c9e6b",
      "parents": [
        "3c26ff6e499ee7e6f9f2bc7da5f2f30d80862ecf"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 25 23:47:46 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:16:33 2010 -0400"
      },
      "message": "convert get_sb_pseudo() users\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -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: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "4390110fef9e5c64e10c6ca19d586932242c9a8a",
      "tree": "f2f26fe291c8b4e424b97ac57370b33e0c006568",
      "parents": [
        "a4dd8dce14014665862ce7911b38cb2c69e366dd",
        "42d7ba3d6d56a6cbc773284896108b1e2ebcee81"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 09:55:25 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 09:55:25 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.37\u0027 of git://linux-nfs.org/~bfields/linux: (99 commits)\n  svcrpc: svc_tcp_sendto XPT_DEAD check is redundant\n  svcrpc: no need for XPT_DEAD check in svc_xprt_enqueue\n  svcrpc: assume svc_delete_xprt() called only once\n  svcrpc: never clear XPT_BUSY on dead xprt\n  nfsd4: fix connection allocation in sequence()\n  nfsd4: only require krb5 principal for NFSv4.0 callbacks\n  nfsd4: move minorversion to client\n  nfsd4: delay session removal till free_client\n  nfsd4: separate callback change and callback probe\n  nfsd4: callback program number is per-session\n  nfsd4: track backchannel connections\n  nfsd4: confirm only on succesful create_session\n  nfsd4: make backchannel sequence number per-session\n  nfsd4: use client pointer to backchannel session\n  nfsd4: move callback setup into session init code\n  nfsd4: don\u0027t cache seq_misordered replies\n  SUNRPC: Properly initialize sock_xprt.srcaddr in all cases\n  SUNRPC: Use conventional switch statement when reclassifying sockets\n  sunrpc/xprtrdma: clean up workqueue usage\n  sunrpc: Turn list_for_each-s into the ..._entry-s\n  ...\n\nFix up trivial conflicts (two different deprecation notices added in\nseparate branches) in Documentation/feature-removal-schedule.txt\n"
    },
    {
      "commit": "85fe4025c616a7c0ed07bc2fc8c5371b07f3888c",
      "tree": "7a5db7accb6192f2911f2473b4e3191227b914cc",
      "parents": [
        "f991bd2e14210fb93d722cb23e54991de20e8a3d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 11:19:54 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "fs: do not assign default i_ino in new_inode\n\nInstead of always assigning an increasing inode number in new_inode\nmove the call to assign it into those callers that actually need it.\nFor now callers that need it is estimated conservatively, that is\nthe call is added to all filesystems that do not assign an i_ino\nby themselves.  For a few more filesystems we can avoid assigning\nany inode number given that they aren\u0027t user visible, and for others\nit could be done lazily when an inode number is actually needed,\nbut that\u0027s left for later patches.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5f05647dd81c11a6a165ccc8f0c1370b16f3bcb0",
      "tree": "7851ef1c93aa1aba7ef327ca4b75fd35e6d10f29",
      "parents": [
        "02f36038c568111ad4fc433f6fa760ff5e38fab4",
        "ec37a48d1d16c30b655ac5280209edf52a6775d4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 11:47:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 11:47:02 2010 -0700"
      },
      "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: (1699 commits)\n  bnx2/bnx2x: Unsupported Ethtool operations should return -EINVAL.\n  vlan: Calling vlan_hwaccel_do_receive() is always valid.\n  tproxy: use the interface primary IP address as a default value for --on-ip\n  tproxy: added IPv6 support to the socket match\n  cxgb3: function namespace cleanup\n  tproxy: added IPv6 support to the TPROXY target\n  tproxy: added IPv6 socket lookup function to nf_tproxy_core\n  be2net: Changes to use only priority codes allowed by f/w\n  tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled\n  tproxy: added tproxy sockopt interface in the IPV6 layer\n  tproxy: added udp6_lib_lookup function\n  tproxy: added const specifiers to udp lookup functions\n  tproxy: split off ipv6 defragmentation to a separate module\n  l2tp: small cleanup\n  nf_nat: restrict ICMP translation for embedded header\n  can: mcp251x: fix generation of error frames\n  can: mcp251x: fix endless loop in interrupt handler if CANINTF_MERRF is set\n  can-raw: add msg_flags to distinguish local traffic\n  9p: client code cleanup\n  rds: make local functions/variables static\n  ...\n\nFix up conflicts in net/core/dev.c, drivers/net/pcmcia/smc91c92_cs.c and\ndrivers/net/wireless/ath/ath9k/debug.c as per David\n"
    },
    {
      "commit": "11165f1457181e4499e5eada442434a07827ffd8",
      "tree": "a681641ba47d5b10a928e89b8ee30acd1b2fa332",
      "parents": [
        "7e12bb0adb5b3114a73098d3536b3c45635e6c95"
      ],
      "author": {
        "name": "stephen hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Mon Oct 18 14:27:29 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 21 03:09:42 2010 -0700"
      },
      "message": "socket: localize functions\n\nA couple of functions in socket.c are only used there and\nshould be localized.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "721db93a55dad71bb89e7d11cc6be1f180ec3f2d",
      "tree": "b96d78f06ff20e73f8e1469ac77e5656e2552a8e",
      "parents": [
        "37aa2133731d9231eb834f700119f0d3f1ed2664"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Wed Sep 29 16:06:32 2010 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 17:18:59 2010 -0400"
      },
      "message": "net: Export __sock_create\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "fb8621bb6c040a25ac2fc246653859f841a1f53d",
      "tree": "c29874ad2a871e87cfef70cb21f47129ce2a1db9",
      "parents": [
        "e3634169bcc0cce33c815865d62ab378739f7389"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Sep 07 03:55:00 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 08 13:46:13 2010 -0700"
      },
      "message": "net: remove address space warnings in net/socket.c\n\nCasts __kernel to __user pointer require __force markup, so add it. Also\nsock_get/setsockopt() takes @optval and/or @optlen arguments as user pointers\nbut were taking kernel pointers, use new variables \u0027uoptval\u0027 and/or \u0027uoptlen\u0027\nto fix it. These remove following warnings from sparse:\n\n net/socket.c:1922:46: warning: cast adds address space to expression (\u003casn:1\u003e)\n net/socket.c:3061:61: warning: incorrect type in argument 4 (different address spaces)\n net/socket.c:3061:61:    expected char [noderef] \u003casn:1\u003e*optval\n net/socket.c:3061:61:    got char *optval\n net/socket.c:3061:69: warning: incorrect type in argument 5 (different address spaces)\n net/socket.c:3061:69:    expected int [noderef] \u003casn:1\u003e*optlen\n net/socket.c:3061:69:    got int *optlen\n net/socket.c:3063:67: warning: incorrect type in argument 4 (different address spaces)\n net/socket.c:3063:67:    expected char [noderef] \u003casn:1\u003e*optval\n net/socket.c:3063:67:    got char *optval\n net/socket.c:3064:45: warning: incorrect type in argument 5 (different address spaces)\n net/socket.c:3064:45:    expected int [noderef] \u003casn:1\u003e*optlen\n net/socket.c:3064:45:    got int *optlen\n net/socket.c:3078:61: warning: incorrect type in argument 4 (different address spaces)\n net/socket.c:3078:61:    expected char [noderef] \u003casn:1\u003e*optval\n net/socket.c:3078:61:    got char *optval\n net/socket.c:3080:67: warning: incorrect type in argument 4 (different address spaces)\n net/socket.c:3080:67:    expected char [noderef] \u003casn:1\u003e*optval\n net/socket.c:3080:67:    got char *optval\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2244d07bfa2097cb00600da91c715a8aa547917e",
      "tree": "44d67d9ffba3697fffeb05c13e88aa76ebc3fd4a",
      "parents": [
        "4d5870ec103e6569851b9710f0093f072b08439a"
      ],
      "author": {
        "name": "Oliver Hartkopp",
        "email": "socketcan@hartkopp.net",
        "time": "Tue Aug 17 08:59:14 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Aug 19 00:08:30 2010 -0700"
      },
      "message": "net: simplify flags for tx timestamping\n\nThis patch removes the abstraction introduced by the union skb_shared_tx in\nthe shared skb data.\n\nThe access of the different union elements at several places led to some\nconfusion about accessing the shared tx_flags e.g. in skb_orphan_try().\n\n    http://marc.info/?l\u003dlinux-netdev\u0026m\u003d128084897415886\u0026w\u003d2\n\nSigned-off-by: Oliver Hartkopp \u003csocketcan@hartkopp.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "f3298dc4f2277874d40cb4fc3a6e277317d6603b"
}
