)]}'
{
  "log": [
    {
      "commit": "d0f1fed29e6e73d9d17f4c91a5896a4ce3938d45",
      "tree": "d44eae96f46e728cb9d87bca1b2494022bf590a9",
      "parents": [
        "6845756b29e4c4e7db41e2d75cafa9d091bc1c07"
      ],
      "author": {
        "name": "Jonathan Cameron",
        "email": "jic23@cam.ac.uk",
        "time": "Tue Apr 19 12:43:45 2011 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 19 16:55:28 2011 +0930"
      },
      "message": "Add a strtobool function matching semantics of existing in kernel equivalents\n\nThis is a rename of the usr_strtobool proposal, which was a renamed,\nrelocated and fixed version of previous kstrtobool RFC\n\nSigned-off-by: Jonathan Cameron \u003cjic23@cam.ac.uk\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d5f1fb53353edc38da326445267c1df0c9676df2",
      "tree": "42def644ebd0d343f2eba9e625f4b9b1ea8a36f0",
      "parents": [
        "a3291c14ecf0a995e30d993b7f2cae031de98727"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 14 10:53:55 2010 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 14 22:38:09 2010 -0500"
      },
      "message": "lib: Introduce strnstr()\n\nIt differs strstr() in that it limits the length to be searched\nin the first string.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4B4E8743.6030805@cn.fujitsu.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ca54cb8c9eb38095dc420b73c6380ce1dbeb10fa",
      "tree": "35b5ba777b962e95039521d912d926a9372b2e8f",
      "parents": [
        "925ede0bf4ecef96fc2d939b16619530111aa16e"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Dec 14 18:01:15 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:34 2009 -0800"
      },
      "message": "Subject: Re: [PATCH] strstrip incorrectly marked __must_check\n\nRecently, We marked strstrip() as must_check.  because it was frequently\nmisused and it should be checked.  However, we found one exception.\nscsi/ipr.c intentionally ignore return value of strstrip.  Because it\nwishes to keep the whitespace at the beginning.\n\nThus we need to keep with and without checked whitespace trim function.\nThis patch adds a new strim() and changes ipr.c to use it.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSuggested-by: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f653398c86a1c104f0992bd788dd4bb065449be4",
      "tree": "69cd79aaca48c2e1bdf9a48b968772347dbd5df2",
      "parents": [
        "4e62b0930223fe2f61094ceb1bbb31b3fe4251c2"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Mon Dec 14 18:01:04 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:32 2009 -0800"
      },
      "message": "string: factorize skip_spaces and export it to be generally available\n\nOn the following sentence:\n    while (*s \u0026\u0026 isspace(*s))\n        s++;\n\nIf *s \u003d\u003d 0, isspace() evaluates to ((_ctype[*s] \u0026 0x20) !\u003d 0), which\nevaluates to ((0x08 \u0026 0x20) !\u003d 0) which equals to 0 as well.\nIf *s \u003d\u003d 1, we depend on isspace() result anyway. In other words,\n\"a char equals zero is never a space\", so remove this check.\n\nAlso, *s !\u003d 0 is most common case (non-null string).\n\nFixed const return as noticed by Jan Engelhardt and James Bottomley.\nFixed unnecessary extra cast on strstrip() as noticed by Jan Engelhardt.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0a1b71b4008d332e57b5605a8228ea7aa96687e8",
      "tree": "92016012d1fa61980b5fd1519172704364f51e2d",
      "parents": [
        "478988d3b28e98a31e0cfe24e011e28ba0f3cf0d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Oct 26 16:49:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 29 07:39:25 2009 -0700"
      },
      "message": "strstrip(): mark as as must_check\n\nstrstrip() can return a modified value of its input argument, when\nremoving elading whitesapce.  So it is surely bug for this function\u0027s\nreturn value to be ignored.  The caller is probably going to use the\nincorrect original pointer.\n\nSo mark it __must_check to prevent this frm happening (as it has before).\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cab4e4c43f92582a2bfc026137b3d8a175bd0360",
      "tree": "2f0e8fbc2e7d2d0cd6f1658a5e084a53b1e83a2e",
      "parents": [
        "5412b5399e095730008a14f2107331b2123733e4",
        "49502677e11079c2e3e01867c922a894ce06a8be"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 10:30:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 10:30:21 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-module-and-param\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-module-and-param:\n  module: use strstarts()\n  strstarts: helper function for !strncmp(str, prefix, strlen(prefix))\n  arm: allow usage of string functions in linux/string.h\n  module: don\u0027t use stop_machine on module load\n  module: create a request_module_nowait()\n  module: include other structures in module version check\n  module: remove the SHF_ALLOC flag on the __versions section.\n  module: clarify the force-loading taint message.\n  module: Export symbols needed for Ksplice\n  Ksplice: Add functions for walking kallsyms symbols\n  module: remove module_text_address()\n  module: __module_address\n  module: Make find_symbol return a struct kernel_symbol\n  kernel/module.c: fix an unused goto label\n  param: fix charp parameters set via sysfs\n\nFix trivial conflicts in kernel/extable.c manually.\n"
    },
    {
      "commit": "e4c393fd551654179c46b65e4a70ea20d831c783",
      "tree": "087c5c1f514a2ffeb75c925545e584fb269bea3a",
      "parents": [
        "0a053e8c71d666daf30da2d407147b1293923d8b",
        "38a6ed3ed8e108b662f4016a1ebf068dcf4c1ef4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 10:23:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 10:23:25 2009 -0700"
      },
      "message": "Merge branch \u0027printk-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027printk-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  printk: correct the behavior of printk_timed_ratelimit()\n  vsprintf: unify the format decoding layer for its 3 users, cleanup\n  fix regression from \"vsprintf: unify the format decoding layer for its 3 users\"\n  vsprintf: fix bug in negative value printing\n  vsprintf: unify the format decoding layer for its 3 users\n  vsprintf: add binary printf\n  printk: introduce printk_once()\n\nFix trivial conflicts (printk_once vs log_buf_kexec_setup() added near\neach other) in include/linux/kernel.h.\n"
    },
    {
      "commit": "610a77e04a8d9fe8764dc484e2182fa251ce1cc2",
      "tree": "ec55b9b3698321c3e85cd649fa927554027c75d0",
      "parents": [
        "e2f17d9459aeccf4e013e31cbd741d6b1858eec4"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Mar 31 15:23:16 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:13 2009 -0700"
      },
      "message": "memdup_user(): introduce\n\nI notice there are many places doing copy_from_user() which follows\nkmalloc():\n\n        dst \u003d kmalloc(len, GFP_KERNEL);\n        if (!dst)\n                return -ENOMEM;\n        if (copy_from_user(dst, src, len)) {\n\t\tkfree(dst);\n\t\treturn -EFAULT\n\t}\n\nmemdup_user() is a wrapper of the above code.  With this new function, we\ndon\u0027t have to write \u0027len\u0027 twice, which can lead to typos/mistakes.  It\nalso produces smaller code and kernel text.\n\nA quick grep shows 250+ places where memdup_user() *may* be used.  I\u0027ll\nprepare a patchset to do this conversion.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Americo Wang \u003cxiyou.wangcong@gmail.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "66f92cf9d415e96a5bdd6c64de8dd8418595d2fc",
      "tree": "73fe062a18c14cbc96efc4adb8f65cf5421d6a6f",
      "parents": [
        "aa0d3bb77e780054babcd289484cf4c15180111b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:36 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:36 2009 +1030"
      },
      "message": "strstarts: helper function for !strncmp(str, prefix, strlen(prefix))\n\nImpact: minor new API\n\nksplice added a \"starts_with\" function, which seems like a common need.\nWhen people open-code it they seem to use fixed numbers rather than strlen,\nso it\u0027s quite a readability win (also, strncmp() almost always wants !\u003d 0\non it).\n\nSo here\u0027s strstarts().\n\nCc: Anders Kaseorg \u003candersk@mit.edu\u003e\nCc: Jeff Arnold \u003cjbarnold@mit.edu\u003e\nCc: Tim Abbott \u003ctabbott@mit.edu\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "4370aa4aa75391a5e2e06bccb0919109f725ed8e",
      "tree": "602a6ea4e404d17e610d4a9979d615ff2d0bfd98",
      "parents": [
        "f036be96dd9ce442ffb9ab33e3c165f5178815c0"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Fri Mar 06 17:21:46 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 17:39:04 2009 +0100"
      },
      "message": "vsprintf: add binary printf\n\nImpact: add new APIs for binary trace printk infrastructure\n\nvbin_printf(): write args to binary buffer, string is copied\nwhen \"%s\" is occurred.\n\nbstr_printf(): read from binary buffer for args and format a string\n\n[fweisbec@gmail.com: rebase]\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nLKML-Reference: \u003c1236356510-8381-2-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4ac96572f1f6abe44b5e02e80fdfb5a990129613",
      "tree": "4eb5698bb5b48435ccf5d919629fdbbcf235c561",
      "parents": [
        "c10555faca342820d861e80ca2e1edcf2114f751"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sun Nov 02 09:51:27 2008 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 02 10:15:07 2008 -0800"
      },
      "message": "linux/string.h: fix comment typo\n\ns/user/used/\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e108526e77aa41c89b3be96f75d97615db2b751c",
      "tree": "11f3041d170d32ea49894527aa119016d76716b5",
      "parents": [
        "338b9bb3adac0d2c5a1e180491d9b001d624c402"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Jul 23 21:26:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:13 2008 -0700"
      },
      "message": "move memory_read_from_buffer() from fs.h to string.h\n\nJames Bottomley warns that inclusion of linux/fs.h in a low level\ndriver was always a danger signal.  This patch moves\nmemory_read_from_buffer() from fs.h to string.h and fixes includes in\nexisting memory_read_from_buffer() users.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@hansenpartnership.com\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Zhang Rui \u003crui.zhang@intel.com\u003e\nCc: Bob Moore \u003crobert.moore@intel.com\u003e\nCc: Thomas Renninger \u003ctrenn@suse.de\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "34990cf702bdf2b4964e0629dab4af7669f8b2c5",
      "tree": "33ec40ee97be1a9a6b3565dcf49d1dcffff191f9",
      "parents": [
        "7dffa3c673fbcf835cd7be80bb4aec8ad3f51168"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Thu May 01 04:34:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 01 08:03:59 2008 -0700"
      },
      "message": "Add a new sysfs_streq() string comparison function\n\nAdd a new sysfs_streq() string comparison function, which ignores\nthe trailing newlines found in sysfs inputs.  By example:\n\n\tsysfs_streq(\"a\", \"b\")\t\u003d\u003d\u003e false\n\tsysfs_streq(\"a\", \"a\")\t\u003d\u003d\u003e true\n\tsysfs_streq(\"a\", \"a\\n\")\t\u003d\u003d\u003e true\n\tsysfs_streq(\"a\\n\", \"a\")\t\u003d\u003d\u003e true\n\nThis is intended to simplify parsing of sysfs inputs, letting them\navoid the need to manually strip off newlines from inputs.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "97ef1bb0c8e371b7988287f38bd107c4aa14d78d",
      "tree": "ecf658ca568ae33536578ed3bb48eae2a813eb23",
      "parents": [
        "f3baa4827a4b13905dbbdddf15463541bd671dfd"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Oct 30 21:44:00 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Oct 30 21:44:00 2007 -0700"
      },
      "message": "[TIPC]: Fix headercheck wrt. tipc_config.h\n\nIt wants string functions like memcpy() for inline\nroutines, and these define userland interfaces.\n\nThe only clean way to deal with this is to simply\nput linux/string.h into unifdef-y and have it\ninclude \u003cstring.h\u003e when not-__KERNEL__.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d84d1cc7647c7e4f77d517e2d87b4a106a0420d9",
      "tree": "b6ccc40d323998d4ad013c7b05613bc727a8f4e0",
      "parents": [
        "1e66df3ee301209f4a38df097d7cc5cb9b367a3f"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:02 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:40 2007 -0700"
      },
      "message": "add argv_split()\n\nargv_split() is a helper function which takes a string, splits it at\nwhitespace, and returns a NULL-terminated argv vector.  This is\ndeliberately simple - it does no quote processing of any kind.\n\n[ Seems to me that this is something which is already being done in\n  the kernel, but I couldn\u0027t find any other implementations, either to\n  steal or replace.  Keep an eye out. ]\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\n"
    },
    {
      "commit": "1e66df3ee301209f4a38df097d7cc5cb9b367a3f",
      "tree": "55beb2a342dbe08c0404f749e02808e3f09023ac",
      "parents": [
        "8b4a40809e5330c9da5d20107d693d92d73b31dc"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:02 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:39 2007 -0700"
      },
      "message": "add kstrndup\n\nAdd a kstrndup function, modelled on strndup.  Like strndup this\nreturns a string copied into its own allocated memory, but it copies\nno more than the specified number of bytes from the source.\n\nRemove private strndup() from irda code.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nCc: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: Panagiotis Issaris \u003ctakis@issaris.org\u003e\nCc: Rene Scharfe \u003crene.scharfe@lsrfire.ath.cx\u003e\n"
    },
    {
      "commit": "ded220bd8f0823771fc0a9bdf7f5bcbe543197b6",
      "tree": "530854859821c51cb3bcd9092140c535153627e5",
      "parents": [
        "357418e7cac16fed4ca558c6037d189d2109c9c2"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Mar 29 01:18:42 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Apr 26 01:54:39 2007 -0700"
      },
      "message": "[STRING]: Move strcasecmp/strncasecmp to lib/string.c\n\nWe have several platforms using local copies of identical\ncode.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1a2f67b459bb7846d4a15924face63eb2683acc2",
      "tree": "4c010d4c4220c9523342fb0daac90a433f36b53e",
      "parents": [
        "9442e691e4aec85eba43ac60a3e77c77fd2e73a4"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Sep 30 23:27:20 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:19 2006 -0700"
      },
      "message": "[PATCH] kmemdup: introduce\n\nOne of idiomatic ways to duplicate a region of memory is\n\n\tdst \u003d kmalloc(len, GFP_KERNEL);\n\tif (!dst)\n\t\treturn -ENOMEM;\n\tmemcpy(dst, src, len);\n\nwhich is neat code except a programmer needs to write size twice.  Which\nsometimes leads to mistakes.  If len passed to kmalloc is smaller that len\npassed to memcpy, it\u0027s straight overwrite-beyond-end.  If len passed to\nmemcpy is smaller than len passed to kmalloc, it\u0027s either a) legit\nbehaviour ;-), or b) cloned buffer will contain garbage in second half.\n\nSlight trolling of commit lists shows several duplications bugs\ndone exactly because of diverged lenghts:\n\n\tLinux:\n\t\t[CRYPTO]: Fix memcpy/memset args.\n\t\t[PATCH] memcpy/memset fixes\n\tOpenBSD:\n\t\tkerberosV/src/lib/asn1: der_copy.c:1.4\n\nIf programmer is given only one place to play with lengths, I believe, such\nmistakes could be avoided.\n\nWith kmemdup, the snippet above will be rewritten as:\n\n\tdst \u003d kmemdup(src, len, GFP_KERNEL);\n\tif (!dst)\n\t\treturn -ENOMEM;\n\nThis also leads to smaller code (kzalloc effect). Quick grep shows\n200+ places where kmemdup() can be used.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "481fad483487ea967fe20bbc9e565d787f7bf20f",
      "tree": "3a76336443129975d9f7ba99f9a9ea1c494315e5",
      "parents": [
        "3fa2164d03fb7af17fcfe4f8800dd754fbd99ff7"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 23 02:05:44 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:06 2006 -0700"
      },
      "message": "[PATCH] strstrip() API\n\nAdd a new strstrip() function to lib/string.c for removing leading and\ntrailing whitespace from a string.\n\nCc: Michael Holzheu \u003cholzheu@de.ibm.com\u003e\nAcked-by: Ingo Oeser \u003cioe-lkml@rameria.de\u003e\nAcked-by: Joern Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nCc: Corey Minyard \u003cminyard@acm.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Michael Holzheu \u003cHOLZHEU@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8833d328caf009f8da58337e17a2cf5d52993a7c",
      "tree": "dc12f9c94f28ad0fb41ea6c4ebe6a0ae31c36ad1",
      "parents": [
        "894b5779ceeabdce139068310e58bcf51ed9bb22"
      ],
      "author": {
        "name": "Kyle McMartin",
        "email": "kyle@parisc-linux.org",
        "time": "Mon Apr 10 22:53:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:40 2006 -0700"
      },
      "message": "[PATCH] Clean up arch-overrides in linux/string.h\n\nSome string functions were safely overrideable in lib/string.c, but their\ncorresponding declarations in linux/string.h were not.  Correct this, and\nmake strcspn overrideable.\n\nOdds of someone wanting to do optimized assembly of these are small, but\nfor the sake of cleanliness, might as well bring them into line with the\nrest of the file.\n\nSigned-off-by: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "96840aa00a031069a136ec4c55d0bdd09ac6d3a7",
      "tree": "f93592ca47f2412aa0cce3ce4c116d1678a42239",
      "parents": [
        "6687a97d4041f996f725902d2990e5de6ef5cbe5"
      ],
      "author": {
        "name": "Davi Arnaut",
        "email": "davi.arnaut@gmail.com",
        "time": "Fri Mar 24 03:18:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:31 2006 -0800"
      },
      "message": "[PATCH] strndup_user()\n\nThis patch series creates a strndup_user() function to easy copying C strings\nfrom userspace.  Also we avoid common pitfalls like userspace modifying the\nfinal \\0 after the strlen_user().\n\nSigned-off-by: Davi Arnaut \u003cdavi.arnaut@gmail.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dd0fc66fb33cd610bc1a5db8a5e232d34879b4d7",
      "tree": "51f96a9db96293b352e358f66032e1f4ff79fafb",
      "parents": [
        "3b0e77bd144203a507eb191f7117d2c5004ea1de"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Fri Oct 07 07:46:04 2005 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 08 15:00:57 2005 -0700"
      },
      "message": "[PATCH] gfp flags annotations - part 1\n\n - added typedef unsigned int __nocast gfp_t;\n\n - replaced __nocast uses for gfp flags with gfp_t - it gives exactly\n   the same warnings as far as sparse is concerned, doesn\u0027t change\n   generated code (from gcc point of view we replaced unsigned int with\n   typedef) and documents what\u0027s going on far better.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0db925af1db5f3dfe1691c35b39496e2baaff9c9",
      "tree": "bb9f827fa001b27f7a902abf174e8f0057c9df81",
      "parents": [
        "b84c21572de8a732062eff5592e3c4b3b1793bb8"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Jul 07 17:56:58 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jul 07 18:23:46 2005 -0700"
      },
      "message": "[PATCH] propagate __nocast annotations\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "543537bd922692bc978e2e356fcd8bfc9c2ee7d5",
      "tree": "0089e3907e7d6c17c01cffc6ea4a8962ed053079",
      "parents": [
        "991114c6fa6a21d1fa4d544abe78592352860c82"
      ],
      "author": {
        "name": "Paulo Marques",
        "email": "pmarques@grupopie.com",
        "time": "Thu Jun 23 00:09:02 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:18 2005 -0700"
      },
      "message": "[PATCH] create a kstrdup library function\n\nThis patch creates a new kstrdup library function and changes the \"local\"\nimplementations in several places to use this function.\n\nMost of the changes come from the sound and net subsystems.  The sound part\nhad already been acknowledged by Takashi Iwai and the net part by David S.\nMiller.\n\nI left UML alone for now because I would need more time to read the code\ncarefully before making changes there.\n\nSigned-off-by: Paulo Marques \u003cpmarques@grupopie.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
