)]}'
{
  "log": [
    {
      "commit": "d895cb1af15c04c522a25c79cc429076987c089b",
      "tree": "895dc9157e28f603d937a58be664e4e440d5530c",
      "parents": [
        "9626357371b519f2b955fef399647181034a77fe",
        "d3d009cb965eae7e002ea5badf603ea8f4c34915"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 26 20:16:07 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 26 20:16:07 2013 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile (part one) from Al Viro:\n \"Assorted stuff - cleaning namei.c up a bit, fixing -\u003ed_name/-\u003ed_parent\n  locking violations, etc.\n\n  The most visible changes here are death of FS_REVAL_DOT (replaced with\n  \"has -\u003ed_weak_revalidate()\") and a new helper getting from struct file\n  to inode.  Some bits of preparation to xattr method interface changes.\n\n  Misc patches by various people sent this cycle *and* ocfs2 fixes from\n  several cycles ago that should\u0027ve been upstream right then.\n\n  PS: the next vfs pile will be xattr stuff.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits)\n  saner proc_get_inode() calling conventions\n  proc: avoid extra pde_put() in proc_fill_super()\n  fs: change return values from -EACCES to -EPERM\n  fs/exec.c: make bprm_mm_init() static\n  ocfs2/dlm: use GFP_ATOMIC inside a spin_lock\n  ocfs2: fix possible use-after-free with AIO\n  ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path\n  get_empty_filp()/alloc_file() leave both -\u003ef_pos and -\u003ef_version zero\n  target: writev() on single-element vector is pointless\n  export kernel_write(), convert open-coded instances\n  fs: encode_fh: return FILEID_INVALID if invalid fid_type\n  kill f_vfsmnt\n  vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op\n  nfsd: handle vfs_getattr errors in acl protocol\n  switch vfs_getattr() to struct path\n  default SET_PERSONALITY() in linux/elf.h\n  ceph: prepopulate inodes only when request is aborted\n  d_hash_and_lookup(): export, switch open-coded instances\n  9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate()\n  9p: split dropping the acls from v9fs_set_create_acl()\n  ...\n"
    },
    {
      "commit": "21d206819a6f111c77f0a9e920f5efca06dc65fd",
      "tree": "564951cdf932d4fc6790ee3fefbc206517650517",
      "parents": [
        "0e9b10a90f1c30f25dd6f130130240745ab14010"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Feb 23 17:36:01 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 26 02:46:11 2013 -0500"
      },
      "message": "get_empty_filp()/alloc_file() leave both -\u003ef_pos and -\u003ef_version zero\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "39b652527457452f09b35044fb4f8b3b0eabafdf",
      "tree": "acd8fda1d4e37c58c68fe0cfb9288d5d06e14441",
      "parents": [
        "1afc99beaf0fca3767d9b67789a7ae91c4f7a9c9"
      ],
      "author": {
        "name": "Anatol Pomozov",
        "email": "anatol.pomozov@gmail.com",
        "time": "Wed Sep 12 20:11:55 2012 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 22 23:31:32 2013 -0500"
      },
      "message": "fs: Preserve error code in get_empty_filp(), part 2\n\nAllocating a file structure in function get_empty_filp() might fail because\nof several reasons:\n - not enough memory for file structures\n - operation is not allowed\n - user is over its limit\n\nCurrently the function returns NULL in all cases and we loose the exact\nreason of the error. All callers of get_empty_filp() assume that the function\ncan fail with ENFILE only.\n\nReturn error through pointer. Change all callers to preserve this error code.\n\n[AV: cleaned up a bit, carved the get_empty_filp() part out into a separate commit\n(things remaining here deal with alloc_file()), removed pipe(2) behaviour change]\n\nSigned-off-by: Anatol Pomozov \u003canatol.pomozov@gmail.com\u003e\nReviewed-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "954b1244530064d48dde133f906026e56ba0ae56",
      "tree": "0ddd53876256330982b1d36b1752a737dd1963b5",
      "parents": [
        "b2748267d6487857f1400dc42748c5409e0ee130"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Mon Feb 11 06:22:28 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Feb 11 14:16:26 2013 -0500"
      },
      "message": "ethtool: fix sparse warning\n\nFixes sparse complaints about dropping __user in casts.\n warning: cast removes address space of expression\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\nAcked-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a786a7c0ad44985548118fd2370c792c0da36891",
      "tree": "506d699d86f31aafe7c55a198458011983cf5ae6",
      "parents": [
        "1b13c97fae9c61dc20db8e0d0a72a29df29ac377"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Jan 30 21:49:29 2013 -0500"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Thu Jan 31 19:20:33 2013 -0500"
      },
      "message": "wanrouter: completely decouple obsolete code from kernel.\n\nThe original suggestion to delete wanrouter started earlier\nwith the mainline commit f0d1b3c2bcc5de8a17af5f2274f7fcde8292b5fc\n(\"net/wanrouter: Deprecate and schedule for removal\") in May 2012.\n\nMore importantly, Dan Carpenter found[1] that the driver had a\nfundamental breakage introduced back in 2008, with commit\n7be6065b39c3 (\"netdevice wanrouter: Convert directly reference of\nnetdev-\u003epriv\").  So we know with certainty that the code hasn\u0027t been\nused by anyone willing to at least take the effort to send an e-mail\nreport of breakage for at least 4 years.\n\nThis commit does a decouple of the wanrouter subsystem, by going\nafter the Makefile/Kconfig and similar files, so that these mainline\nfiles that we are keeping do not have the big wanrouter file/driver\ndeletion commit tied into their history.\n\nOnce this commit is in place, we then can remove the obsolete cyclomx\ndrivers and similar that have a dependency on CONFIG_WAN_ROUTER_DRIVERS.\n\n[1] http://www.spinics.net/lists/netdev/msg218670.html\n\nOriginally-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "6a328d8c6f03501657ad580f6f98bf9a42583ff7",
      "tree": "e2740717dd3233a1078872e48a7b159e71e6102b",
      "parents": [
        "fd9a08a7b83074e34c13c6340f673f7a51f53489"
      ],
      "author": {
        "name": "Daniel Wagner",
        "email": "daniel.wagner@bmw-carit.de",
        "time": "Thu Oct 25 04:16:59 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 26 03:40:51 2012 -0400"
      },
      "message": "cgroup: net_cls: Rework update socket logic\n\nThe cgroup logic part of net_cls is very similar as the one in\nnet_prio. Let\u0027s stream line the net_cls logic with the net_prio one.\n\nThe net_prio update logic was changed by following commit (note there\nwere some changes necessary later on)\n\ncommit 406a3c638ce8b17d9704052c07955490f732c2b8\nAuthor: John Fastabend \u003cjohn.r.fastabend@intel.com\u003e\nDate:   Fri Jul 20 10:39:25 2012 +0000\n\n    net: netprio_cgroup: rework update socket logic\n\n    Instead of updating the sk_cgrp_prioidx struct field on every send\n    this only updates the field when a task is moved via cgroup\n    infrastructure.\n\n    This allows sockets that may be used by a kernel worker thread\n    to be managed. For example in the iscsi case today a user can\n    put iscsid in a netprio cgroup and control traffic will be sent\n    with the correct sk_cgrp_prioidx value set but as soon as data\n    is sent the kernel worker thread isssues a send and sk_cgrp_prioidx\n    is updated with the kernel worker threads value which is the\n    default case.\n\n    It seems more correct to only update the field when the user\n    explicitly sets it via control group infrastructure. This allows\n    the users to manage sockets that may be used with other threads.\n\nSince classid is now updated when the task is moved between the\ncgroups, we don\u0027t have to call sock_update_classid() from various\nplaces to ensure we always using the latest classid value.\n\n[v2: Use iterate_fd() instead of open coding]\n\nSigned-off-by: Daniel Wagner \u003cdaniel.wagner@bmw-carit.de\u003e\nCc:  Li Zefan \u003clizefan@huawei.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: \"Michael S. Tsirkin\" \u003cmst@redhat.com\u003e\nCc: Jamal Hadi Salim \u003cjhs@mojatatu.com\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nCc: John Fastabend \u003cjohn.r.fastabend@intel.com\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: \u003cnetdev@vger.kernel.org\u003e\nCc: \u003ccgroups@vger.kernel.org\u003e\nAcked-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fd9a08a7b83074e34c13c6340f673f7a51f53489",
      "tree": "d4678a07c825bb6dbe84b129b82c4efa93d5a474",
      "parents": [
        "3ace03cc2a03eadf83a59eecada68b37bc1a46ae"
      ],
      "author": {
        "name": "Daniel Wagner",
        "email": "daniel.wagner@bmw-carit.de",
        "time": "Thu Oct 25 04:16:58 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 26 03:40:50 2012 -0400"
      },
      "message": "cgroup: net_cls: Pass in task to sock_update_classid()\n\nsock_update_classid() assumes that the update operation always are\napplied on the current task. sock_update_classid() needs to know on\nwhich tasks to work on in order to be able to migrate task between\ncgroups using the struct cgroup_subsys attach() callback.\n\nSigned-off-by: Daniel Wagner \u003cdaniel.wagner@bmw-carit.de\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: \"Michael S. Tsirkin\" \u003cmst@redhat.com\u003e\nCc: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: \u003cnetdev@vger.kernel.org\u003e\nCc: \u003ccgroups@vger.kernel.org\u003e\nAcked-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aab174f0df5d72d31caccf281af5f614fa254578",
      "tree": "2a172c5009c4ac8755e858593154c258ce7709a0",
      "parents": [
        "ca41cc96b2813221b05af57d0355157924de5a07",
        "2bd2c1941f141ad780135ccc1cd08ca71a24f10a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 20:25:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 20:25:04 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs update from Al Viro:\n\n - big one - consolidation of descriptor-related logics; almost all of\n   that is moved to fs/file.c\n\n   (BTW, I\u0027m seriously tempted to rename the result to fd.c.  As it is,\n   we have a situation when file_table.c is about handling of struct\n   file and file.c is about handling of descriptor tables; the reasons\n   are historical - file_table.c used to be about a static array of\n   struct file we used to have way back).\n\n   A lot of stray ends got cleaned up and converted to saner primitives,\n   disgusting mess in android/binder.c is still disgusting, but at least\n   doesn\u0027t poke so much in descriptor table guts anymore.  A bunch of\n   relatively minor races got fixed in process, plus an ext4 struct file\n   leak.\n\n - related thing - fget_light() partially unuglified; see fdget() in\n   there (and yes, it generates the code as good as we used to have).\n\n - also related - bits of Cyrill\u0027s procfs stuff that got entangled into\n   that work; _not_ all of it, just the initial move to fs/proc/fd.c and\n   switch of fdinfo to seq_file.\n\n - Alex\u0027s fs/coredump.c spiltoff - the same story, had been easier to\n   take that commit than mess with conflicts.  The rest is a separate\n   pile, this was just a mechanical code movement.\n\n - a few misc patches all over the place.  Not all for this cycle,\n   there\u0027ll be more (and quite a few currently sit in akpm\u0027s tree).\"\n\nFix up trivial conflicts in the android binder driver, and some fairly\nsimple conflicts due to two different changes to the sock_alloc_file()\ninterface (\"take descriptor handling from sock_alloc_file() to callers\"\nvs \"net: Providing protocol type via system.sockprotoname xattr of\n/proc/PID/fd entries\" adding a dentry name to the socket)\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (72 commits)\n  MAX_LFS_FILESIZE should be a loff_t\n  compat: fs: Generic compat_sys_sendfile implementation\n  fs: push rcu_barrier() from deactivate_locked_super() to filesystems\n  btrfs: reada_extent doesn\u0027t need kref for refcount\n  coredump: move core dump functionality into its own file\n  coredump: prevent double-free on an error path in core dumper\n  usb/gadget: fix misannotations\n  fcntl: fix misannotations\n  ceph: don\u0027t abuse d_delete() on failure exits\n  hypfs: -\u003ed_parent is never NULL or negative\n  vfs: delete surplus inode NULL check\n  switch simple cases of fget_light to fdget\n  new helpers: fdget()/fdput()\n  switch o2hb_region_dev_write() to fget_light()\n  proc_map_files_readdir(): don\u0027t bother with grabbing files\n  make get_file() return its argument\n  vhost_set_vring(): turn pollstart/pollstop into bool\n  switch prctl_set_mm_exe_file() to fget_light()\n  switch xfs_find_handle() to fget_light()\n  switch xfs_swapext() to fget_light()\n  ...\n"
    },
    {
      "commit": "e2bcabec6ea5ba30dd2097dc1566e9957d14117c",
      "tree": "73c09343cd7302aea199bd1e991b81897f8ca5d7",
      "parents": [
        "f54ba7798848ce1385a71b36a2c997422c82220a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Tue Sep 25 11:32:13 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 27 18:42:00 2012 -0400"
      },
      "message": "net: remove sk_init() helper\n\nIt seems sk_init() has no value today and even does strange things :\n\n# grep . /proc/sys/net/core/?mem_*\n/proc/sys/net/core/rmem_default:212992\n/proc/sys/net/core/rmem_max:131071\n/proc/sys/net/core/wmem_default:212992\n/proc/sys/net/core/wmem_max:131071\n\nWe can remove it completely.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nReviewed-by: Shan Wei \u003cdavidshan@tencent.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "56b31d1c9f1e6a3ad92e7bfe252721e05d92b285",
      "tree": "44521dbcdf51695b6092f2a4dabe83f460c2ed7c",
      "parents": [
        "28407630513b1a86133db0ef8b39fabad6c494af"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Aug 18 00:25:51 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 21:08:50 2012 -0400"
      },
      "message": "unexport sock_map_fd(), switch to sock_alloc_file()\n\nBoth modular callers of sock_map_fd() had been buggy; sctp one leaks\ndescriptor and file if copy_to_user() fails, 9p one shouldn\u0027t be\nexposing file in the descriptor table at all.\n\nSwitch both to sock_alloc_file(), export it, unexport sock_map_fd() and\nmake it static.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "28407630513b1a86133db0ef8b39fabad6c494af",
      "tree": "e7b44dc7d4690eb9f66dab7042a66fe04af2e61b",
      "parents": [
        "5905db5ca0ac9a6d5bfe87f86b87cd1bdec3755a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Aug 17 23:54:15 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 21:08:49 2012 -0400"
      },
      "message": "take descriptor handling from sock_alloc_file() to callers\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b48b63a1f6e26b0dec2c9f1690396ed4bcb66903",
      "tree": "8d9ad227c3a7d35cd78d40ecaf9bf59375dbd21a",
      "parents": [
        "7f2e6a5d8608d0353b017a0fe15502307593734e",
        "3f0c3c8fe30c725c1264fb6db8cc4b69db3a658a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Sep 15 11:43:53 2012 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Sep 15 11:43:53 2012 -0400"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\nConflicts:\n\tnet/netfilter/nfnetlink_log.c\n\tnet/netfilter/xt_LOG.c\n\nRather easy conflict resolution, the \u0027net\u0027 tree had bug fixes to make\nsure we checked if a socket is a time-wait one or not and elide the\nlogging code if so.\n\nWhereas on the \u0027net-next\u0027 side we are calculating the UID and GID from\nthe creds using different interfaces due to the user namespace changes\nfrom Eric Biederman.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ed6fe9d614fc1bca95eb8c0ccd0e92db00ef9d5d",
      "tree": "21944562e0935f46f45c30986ddbe005c63feaca",
      "parents": [
        "5b716ac728bcc01b1f2a7ed6e437196602237c27"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Sat Sep 01 12:34:07 2012 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 05 18:34:13 2012 -0700"
      },
      "message": "Fix order of arguments to compat_put_time[spec|val]\n\nCommit 644595f89620 (\"compat: Handle COMPAT_USE_64BIT_TIME in\nnet/socket.c\") introduced a bug where the helper functions to take\neither a 64-bit or compat time[spec|val] got the arguments in the wrong\norder, passing the kernel stack pointer off as a user pointer (and vice\nversa).\n\nBecause of the user address range check, that in turn then causes an\nEFAULT due to the user pointer range checking failing for the kernel\naddress.  Incorrectly resuling in a failed system call for 32-bit\nprocesses with a 64-bit kernel.\n\nOn odder architectures like HP-PA (with separate user/kernel address\nspaces), it can be used read kernel memory.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "600e177920df936d03b807780ca92c662af98990",
      "tree": "76c4cb39ce71d2e0b63074e1170c60792fb7913c",
      "parents": [
        "cefd81cfeca14ec4c63cc748441634f1d4c0eb3f"
      ],
      "author": {
        "name": "Masatake YAMATO",
        "email": "yamato@redhat.com",
        "time": "Wed Aug 29 10:44:29 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 04 15:52:13 2012 -0400"
      },
      "message": "net: Providing protocol type via system.sockprotoname xattr of /proc/PID/fd entries\n\nlsof reports some of socket descriptors as \"can\u0027t identify protocol\" like:\n\n    [yamato@localhost]/tmp% sudo lsof | grep dbus | grep iden\n    dbus-daem   652          dbus    6u     sock ... 17812 can\u0027t identify protocol\n    dbus-daem   652          dbus   34u     sock ... 24689 can\u0027t identify protocol\n    dbus-daem   652          dbus   42u     sock ... 24739 can\u0027t identify protocol\n    dbus-daem   652          dbus   48u     sock ... 22329 can\u0027t identify protocol\n    ...\n\nlsof cannot resolve the protocol used in a socket because procfs\ndoesn\u0027t provide the map between inode number on sockfs and protocol\ntype of the socket.\n\nFor improving the situation this patch adds an extended attribute named\n\u0027system.sockprotoname\u0027 in which the protocol name for\n/proc/PID/fd/SOCKET is stored. So lsof can know the protocol for a\ngiven /proc/PID/fd/SOCKET with getxattr system call.\n\nA few weeks ago I submitted a patch for the same purpose. The patch\nwas introduced /proc/net/sockfs which enumerates inodes and protocols\nof all sockets alive on a system. However, it was rejected because (1)\na global lock was needed, and (2) the layout of struct socket was\nchanged with the patch.\n\nThis patch doesn\u0027t use any global lock; and doesn\u0027t change the layout\nof any structs.\n\nIn this patch, a protocol name is stored to dentry-\u003ed_name of sockfs\nwhen new socket is associated with a file descriptor. Before this\npatch dentry-\u003ed_name was not used; it was just filled with empty\nstring. lsof may use an extended attribute named\n\u0027system.sockprotoname\u0027 to retrieve the value of dentry-\u003ed_name.\n\nIt is nice if we can see the protocol name with ls -l\n/proc/PID/fd. However, \"socket:[#INODE]\", the name format returned\nfrom sockfs_dname() was already defined. To keep the compatibility\nbetween kernel and user land, the extended attribute is used to\nprepare the value of dentry-\u003ed_name.\n\nSigned-off-by: Masatake YAMATO \u003cyamato@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "43da5f2e0d0c69ded3d51907d9552310a6b545e8",
      "tree": "a4858b0f6b300c06e12986b7c29e7a4d9ece76d9",
      "parents": [
        "2d8a041b7bfe1097af21441cb77d6af95f4f4680"
      ],
      "author": {
        "name": "Mathias Krause",
        "email": "minipli@googlemail.com",
        "time": "Wed Aug 15 11:31:57 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 15 21:36:31 2012 -0700"
      },
      "message": "net: fix info leak in compat dev_ifconf()\n\nThe implementation of dev_ifconf() for the compat ioctl interface uses\nan intermediate ifc structure allocated in userland for the duration of\nthe syscall. Though, it fails to initialize the padding bytes inserted\nfor alignment and that for leaks four bytes of kernel stack. Add an\nexplicit memset(0) before filling the structure to avoid the info leak.\n\nSigned-off-by: Mathias Krause \u003cminipli@googlemail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "406a3c638ce8b17d9704052c07955490f732c2b8",
      "tree": "db759dfccc6c09196773d0cc1ec260a7a4e9db07",
      "parents": [
        "0690899b4d4501b3505be069b9a687e68ccbe15b"
      ],
      "author": {
        "name": "John Fastabend",
        "email": "john.r.fastabend@intel.com",
        "time": "Fri Jul 20 10:39:25 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 22 12:44:01 2012 -0700"
      },
      "message": "net: netprio_cgroup: rework update socket logic\n\nInstead of updating the sk_cgrp_prioidx struct field on every send\nthis only updates the field when a task is moved via cgroup\ninfrastructure.\n\nThis allows sockets that may be used by a kernel worker thread\nto be managed. For example in the iscsi case today a user can\nput iscsid in a netprio cgroup and control traffic will be sent\nwith the correct sk_cgrp_prioidx value set but as soon as data\nis sent the kernel worker thread isssues a send and sk_cgrp_prioidx\nis updated with the kernel worker threads value which is the\ndefault case.\n\nIt seems more correct to only update the field when the user\nexplicitly sets it via control group infrastructure. This allows\nthe users to manage sockets that may be used with other threads.\n\nSigned-off-by: John Fastabend \u003cjohn.r.fastabend@intel.com\u003e\nAcked-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b09e786bd1dd66418b69348cb110f3a64764626a",
      "tree": "e4f12db01edc11d669f32a2d3d6832b22f57f656",
      "parents": [
        "521f549097a79dc55e18c3bc752ef2127ad70ac5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mikulas@artax.karlin.mff.cuni.cz",
        "time": "Thu Jul 19 06:13:36 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 20 11:21:06 2012 -0700"
      },
      "message": "tun: fix a crash bug and a memory leak\n\nThis patch fixes a crash\ntun_chr_close -\u003e netdev_run_todo -\u003e tun_free_netdev -\u003e sk_release_kernel -\u003e\nsock_release -\u003e iput(SOCK_INODE(sock))\nintroduced by commit 1ab5ecb90cb6a3df1476e052f76a6e8f6511cb3d\n\nThe problem is that this socket is embedded in struct tun_struct, it has\nno inode, iput is called on invalid inode, which modifies invalid memory\nand optionally causes a crash.\n\nsock_release also decrements sockets_in_use, this causes a bug that\n\"sockets: used\" field in /proc/*/net/sockstat keeps on decreasing when\ncreating and closing tun devices.\n\nThis patch introduces a flag SOCK_EXTERNALLY_ALLOCATED that instructs\nsock_release to not free the inode and not decrement sockets_in_use,\nfixing both memory corruption and sockets_in_use underflow.\n\nIt should be backported to 3.3 an 3.4 stabke.\n\nSigned-off-by: Mikulas Patocka \u003cmikulas@artax.karlin.mff.cuni.cz\u003e\nCc: stable@kernel.org\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f5c101892fbd3d2f6d2729bc7eb7b3f6c31dbddd",
      "tree": "ae24f42e327c95af356cfa5ba407b1a7fad84fd5",
      "parents": [
        "c54894cd4672d513e43e0d17d7b0387bf6b2c2c4",
        "641b695c2f11397bd307ea689d4d3f128360ce49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 22 17:37:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 22 17:37:47 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\nPull percpu updates from Tejun Heo:\n \"Contains Alex Shi\u0027s three patches to remove percpu_xxx() which overlap\n  with this_cpu_xxx().  There shouldn\u0027t be any functional change.\"\n\n* \u0027for-3.5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu: remove percpu_xxx() functions\n  x86: replace percpu_xxx funcs with this_cpu_xxx\n  net: replace percpu_xxx funcs with this_cpu_xxx or __this_cpu_xxx\n"
    },
    {
      "commit": "e87cc4728f0e2fb663e592a1141742b1d6c63256",
      "tree": "b8219696d37f0c8d0521d5853560b97fc96dc667",
      "parents": [
        "3a3bfb61e64476ff1e4ac3122cb6dec9c79b795c"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun May 13 21:56:26 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue May 15 13:45:03 2012 -0400"
      },
      "message": "net: Convert net_ratelimit uses to net_\u003clevel\u003e_ratelimited\n\nStandardize the net core ratelimited logging functions.\n\nCoalesce formats, align arguments.\nChange a printk then vprintk sequence to use printf extension %pV.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "19e8d69c543f8f62050099892b138e981db952cc",
      "tree": "d528c64fbf333dccedac785eeebed3adccf5a153",
      "parents": [
        "9ff00d58a915b6747ba2e843ab2d04c712b4dc32"
      ],
      "author": {
        "name": "Alex Shi",
        "email": "alex.shi@intel.com",
        "time": "Mon May 14 14:15:31 2012 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon May 14 14:15:31 2012 -0700"
      },
      "message": "net: replace percpu_xxx funcs with this_cpu_xxx or __this_cpu_xxx\n\npercpu_xxx funcs are duplicated with this_cpu_xxx funcs, so replace\nthem for further code clean up.\n\nAnd in preempt safe scenario, __this_cpu_xxx funcs may has a bit\nbetter performance since __this_cpu_xxx has no redundant\npreempt_enable/preempt_disable on some architectures.\n\nSigned-off-by: Alex Shi \u003calex.shi@intel.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "a74e910618efb154936958cfeb2aab7c234478c5",
      "tree": "eda84fcc25b12194b82c14786380121dbf86ec00",
      "parents": [
        "b139ba4e90dccbf4cd4efb112af96a5c9e0b098c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Fri Apr 20 20:04:01 2012 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 21 16:24:20 2012 -0400"
      },
      "message": "net: change big iov allocations\n\niov of more than 8 entries are allocated in sendmsg()/recvmsg() through\nsock_kmalloc()\n\nAs these allocations are temporary only and small enough, it makes sense\nto use plain kmalloc() and avoid sk_omem_alloc atomic overhead.\n\nSlightly changed fast path to be even faster.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Mike Waychison \u003cmikew@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2ca794e5e86c800d7f98c4ebb8bd325099c0afe8",
      "tree": "f0ae38f58dec5a07ae57e31aca4943c85ffe9d65",
      "parents": [
        "bc8a36942a5c05896d373a8e98d5e6b14514b4bc"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Apr 19 13:20:32 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 20 21:21:16 2012 -0400"
      },
      "message": "net sysctl: Initialize the network sysctls sooner to avoid problems.\n\nIf the netfilter code is modified to use register_net_sysctl_table the\nkernel fails to boot because the per net sysctl infrasturce is not setup\nsoon enough.  So to avoid races call net_sysctl_init from sock_init().\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "95c961747284a6b83a5e2d81240e214b0fa3464d",
      "tree": "c7be86a00db3605a48a03109fafcbe31039ca2e0",
      "parents": [
        "5e73ea1a31c3612aa6dfe44f864ca5b7b6a4cff9"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Apr 15 05:58:06 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 15 12:44:40 2012 -0400"
      },
      "message": "net: cleanup unsigned to unsigned int\n\nUse of \"unsigned int\" is preferred to bare \"unsigned\" in net tree.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "35f9c09fe9c72eb8ca2b8e89a593e1c151f28fc2",
      "tree": "6e57508d6633c47b8846cfdbaefc33e6e0128a47",
      "parents": [
        "78d50217baf36093ab320f95bae0d6452daec85c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 05 03:05:35 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 05 19:04:27 2012 -0400"
      },
      "message": "tcp: tcp_sendpages() should call tcp_push() once\n\ncommit 2f533844242 (tcp: allow splice() to build full TSO packets) added\na regression for splice() calls using SPLICE_F_MORE.\n\nWe need to call tcp_flush() at the end of the last page processed in\ntcp_sendpages(), or else transmits can be deferred and future sends\nstall.\n\nAdd a new internal flag, MSG_SENDPAGE_NOTLAST, acting like MSG_MORE, but\nwith different semantic.\n\nFor all sendpage() providers, its a transparent change. Only\nsock_sendpage() and tcp_sendpages() can differentiate the two different\nflags provided by pipe_to_sendpage()\n\nReported-by: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Nandita Dukkipati \u003cnanditad@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: H.K. Jerry Chu \u003chkchu@google.com\u003e\nCc: Maciej Żenczykowski \u003cmaze@google.com\u003e\nCc: Mahesh Bandewar \u003cmaheshb@google.com\u003e\nCc: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail\u003ecom\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a591afc01d9e48affbacb365558a31e53c85af45",
      "tree": "9bb91f4eb94ec69fc4706c4944788ec5f3586063",
      "parents": [
        "820d41cf0cd0e94a5661e093821e2e5c6b36a9d8",
        "31796ac4e8f0e88f5c10f1ad6dab8f19bebe44a4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 18:12:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 18:12:23 2012 -0700"
      },
      "message": "Merge branch \u0027x86-x32-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull x32 support for x86-64 from Ingo Molnar:\n \"This tree introduces the X32 binary format and execution mode for x86:\n  32-bit data space binaries using 64-bit instructions and 64-bit kernel\n  syscalls.\n\n  This allows applications whose working set fits into a 32 bits address\n  space to make use of 64-bit instructions while using a 32-bit address\n  space with shorter pointers, more compressed data structures, etc.\"\n\nFix up trivial context conflicts in arch/x86/{Kconfig,vdso/vma.c}\n\n* \u0027x86-x32-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (71 commits)\n  x32: Fix alignment fail in struct compat_siginfo\n  x32: Fix stupid ia32/x32 inversion in the siginfo format\n  x32: Add ptrace for x32\n  x32: Switch to a 64-bit clock_t\n  x32: Provide separate is_ia32_task() and is_x32_task() predicates\n  x86, mtrr: Use explicit sizing and padding for the 64-bit ioctls\n  x86/x32: Fix the binutils auto-detect\n  x32: Warn and disable rather than error if binutils too old\n  x32: Only clear TIF_X32 flag once\n  x32: Make sure TS_COMPAT is cleared for x32 tasks\n  fs: Remove missed -\u003efds_bits from cessation use of fd_set structs internally\n  fs: Fix close_on_exec pointer in alloc_fdtable\n  x32: Drop non-__vdso weak symbols from the x32 VDSO\n  x32: Fix coding style violations in the x32 VDSO code\n  x32: Add x32 VDSO support\n  x32: Allow x32 to be configured\n  x32: If configured, add x32 system calls to system call tables\n  x32: Handle process creation\n  x32: Signal-related system calls\n  x86: Add #ifdef CONFIG_COMPAT to \u003casm/sys_ia32.h\u003e\n  ...\n"
    },
    {
      "commit": "43db362d3adda9e0a915ddb9a8d1a41186e19179",
      "tree": "83f00b1c09a4f54c43f94da7afb3064923415394",
      "parents": [
        "8b2aaedee4eaa94e816144ed54b9707b96be29f8"
      ],
      "author": {
        "name": "Maciej Żenczykowski",
        "email": "maze@google.com",
        "time": "Sun Mar 11 12:51:50 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Mar 11 19:11:22 2012 -0700"
      },
      "message": "net: get rid of some pointless casts to sockaddr\n\nThe following 4 functions:\n  move_addr_to_kernel\n  move_addr_to_user\n  verify_iovec\n  verify_compat_iovec\nare always effectively called with a sockaddr_storage.\n\nMake this explicit by changing their signature.\n\nThis removes a large number of casts from sockaddr_storage to sockaddr.\n\nSigned-off-by: Maciej Żenczykowski \u003cmaze@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "644595f89620ba8446cc555be336d24a34464950",
      "tree": "c5d1533e9ba7f7347c50ff9351763364c2fe6282",
      "parents": [
        "ee4fa23c4bfcc635d077a9633d405610de45bc70"
      ],
      "author": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Sun Feb 19 17:51:59 2012 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Mon Feb 20 12:48:48 2012 -0800"
      },
      "message": "compat: Handle COMPAT_USE_64BIT_TIME in net/socket.c\n\nUse helper functions aware of COMPAT_USE_64BIT_TIME to write struct\ntimeval and struct timespec to userspace in net/socket.c.\n\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "9177efd3991e2cb3f5643a01d3be22121cab6efc"
}
