)]}'
{
  "log": [
    {
      "commit": "f6f8285132907757ef84ef8dae0a1244b8cde6ac",
      "tree": "f3d3b37349e79251cfe16ef0f39e0b4af1a266b1",
      "parents": [
        "cfcfc9eca2bcbd26a8e206baeb005b055dbf8e37"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Thu Nov 17 12:58:07 2011 -0800"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Thu Nov 17 12:58:07 2011 -0800"
      },
      "message": "pstore: pass allocated memory region back to caller\n\nThe buf_lock cannot be held while populating the inodes, so make the backend\npass forward an allocated and filled buffer instead. This solves the following\nbacktrace. The effect is that \"buf\" is only ever used to notify the backends\nthat something was written to it, and shouldn\u0027t be used in the read path.\n\nTo replace the buf_lock during the read path, isolate the open/read/close\nloop with a separate mutex to maintain serialized access to the backend.\n\nNote that is is up to the pstore backend to cope if the (*write)() path is\ncalled in the middle of the read path.\n\n[   59.691019] BUG: sleeping function called from invalid context at .../mm/slub.c:847\n[   59.691019] in_atomic(): 0, irqs_disabled(): 1, pid: 1819, name: mount\n[   59.691019] Pid: 1819, comm: mount Not tainted 3.0.8 #1\n[   59.691019] Call Trace:\n[   59.691019]  [\u003c810252d5\u003e] __might_sleep+0xc3/0xca\n[   59.691019]  [\u003c810a26e6\u003e] kmem_cache_alloc+0x32/0xf3\n[   59.691019]  [\u003c810b53ac\u003e] ? __d_lookup_rcu+0x6f/0xf4\n[   59.691019]  [\u003c810b68b1\u003e] alloc_inode+0x2a/0x64\n[   59.691019]  [\u003c810b6903\u003e] new_inode+0x18/0x43\n[   59.691019]  [\u003c81142447\u003e] pstore_get_inode.isra.1+0x11/0x98\n[   59.691019]  [\u003c81142623\u003e] pstore_mkfile+0xae/0x26f\n[   59.691019]  [\u003c810a2a66\u003e] ? kmem_cache_free+0x19/0xb1\n[   59.691019]  [\u003c8116c821\u003e] ? ida_get_new_above+0x140/0x158\n[   59.691019]  [\u003c811708ea\u003e] ? __init_rwsem+0x1e/0x2c\n[   59.691019]  [\u003c810b67e8\u003e] ? inode_init_always+0x111/0x1b0\n[   59.691019]  [\u003c8102127e\u003e] ? should_resched+0xd/0x27\n[   59.691019]  [\u003c8137977f\u003e] ? _cond_resched+0xd/0x21\n[   59.691019]  [\u003c81142abf\u003e] pstore_get_records+0x52/0xa7\n[   59.691019]  [\u003c8114254b\u003e] pstore_fill_super+0x7d/0x91\n[   59.691019]  [\u003c810a7ff5\u003e] mount_single+0x46/0x82\n[   59.691019]  [\u003c8114231a\u003e] pstore_mount+0x15/0x17\n[   59.691019]  [\u003c811424ce\u003e] ? pstore_get_inode.isra.1+0x98/0x98\n[   59.691019]  [\u003c810a8199\u003e] mount_fs+0x5a/0x12d\n[   59.691019]  [\u003c810b9174\u003e] ? alloc_vfsmnt+0xa4/0x14a\n[   59.691019]  [\u003c810b9474\u003e] vfs_kern_mount+0x4f/0x7d\n[   59.691019]  [\u003c810b9d7e\u003e] do_kern_mount+0x34/0xb2\n[   59.691019]  [\u003c810bb15f\u003e] do_mount+0x5fc/0x64a\n[   59.691019]  [\u003c810912fb\u003e] ? strndup_user+0x2e/0x3f\n[   59.691019]  [\u003c810bb3cb\u003e] sys_mount+0x66/0x99\n[   59.691019]  [\u003c8137b537\u003e] sysenter_do_call+0x12/0x26\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "b238b8fa93353ab50c9a2b1e2fa47a0ab01c37cd",
      "tree": "a46a6ce7567d9826ae48c2f3dc5aa0167de1f26c",
      "parents": [
        "abd4d5587be911f63592537284dad78766d97d62"
      ],
      "author": {
        "name": "Chen Gong",
        "email": "gong.chen@linux.intel.com",
        "time": "Wed Oct 12 09:17:24 2011 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Wed Oct 12 09:17:24 2011 -0700"
      },
      "message": "pstore: make pstore write function return normal success/fail value\n\nCurrently pstore write interface employs record id as return\nvalue, but it is not enough because it can\u0027t tell caller if\nthe write operation is successful. Pass the record id back via\nan argument pointer and return zero for success, non-zero for\nfailure.\n\nSigned-off-by: Chen Gong \u003cgong.chen@linux.intel.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "abd4d5587be911f63592537284dad78766d97d62",
      "tree": "50d88b64ded1189d6c816a1f90124a05354914ba",
      "parents": [
        "6dda9266913ad57e09afc1a10d6473f10c806a63"
      ],
      "author": {
        "name": "Don Zickus",
        "email": "dzickus@redhat.com",
        "time": "Fri Aug 12 10:54:51 2011 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Aug 16 11:55:58 2011 -0700"
      },
      "message": "pstore: change mutex locking to spin_locks\n\npstore was using mutex locking to protect read/write access to the\nbackend plug-ins.  This causes problems when pstore is executed in\nan NMI context through panic() -\u003e kmsg_dump().\n\nThis patch changes the mutex to a spin_lock_irqsave then also checks to\nsee if we are in an NMI context.  If we are in an NMI and can\u0027t get the\nlock, just print a message stating that and blow by the locking.\n\nAll this is probably a hack around the bigger locking problem but it\nsolves my current situation of trying to sleep in an NMI context.\n\nTested by loading the lkdtm module and executing a HARDLOCKUP which\nwill cause the machine to panic inside the nmi handler.\n\nSigned-off-by: Don Zickus \u003cdzickus@redhat.com\u003e\nAcked-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "6dda9266913ad57e09afc1a10d6473f10c806a63",
      "tree": "c29258f6b3fd8a9bb080b395157f013f32c0f313",
      "parents": [
        "93ee7a9340d64f20295aacc3fb6a22b759323280"
      ],
      "author": {
        "name": "Luck, Tony",
        "email": "tony.luck@intel.com",
        "time": "Thu Aug 11 15:14:39 2011 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Aug 16 11:53:01 2011 -0700"
      },
      "message": "pstore: defer inserting OOPS entries into pstore\n\nLife is simple for all the kernel terminating types of kmsg_dump\ncall backs - pstore just saves the tail end of the console log. But\nfor \"oops\" the situation is more complex - the kernel may carry on\nrunning (possibly for ever).  So we\u0027d like to make the logged copy\nof the oops appear in the pstore filesystem - so that the user has\na handle to clear the entry from the persistent backing store (if\nwe don\u0027t, the store may fill with \"oops\" entries (that are also\nsafely stashed in /var/log/messages) leaving no space for real\nerrors.\n\nCurrent code calls pstore_mkfile() immediately. But this may\nnot be safe. The oops could have happened with arbitrary locks\nheld, or in interrupt or NMI context. So allocating memory and\ncalling into generic filesystem code seems unwise.\n\nThis patch defers making the entry appear. At the time\nof the oops, we merely set a flag \"pstore_new_entry\" noting that\na new entry has been added. A periodic timer checks once a minute\nto see if the flag is set - if so, it schedules a work queue to\nrescan the backing store and make all new entries appear in the\npstore filesystem.\n\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "dee28e72b619b48ec80a9e5509db458dbe66f71f",
      "tree": "781ef74fc42193f05877af53fe0787d175181bd7",
      "parents": [
        "b94fdd077eef5e6cab56836bf62695b497946716"
      ],
      "author": {
        "name": "Matthew Garrett",
        "email": "mjg@redhat.com",
        "time": "Thu Jul 21 16:57:55 2011 -0400"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 22 16:14:39 2011 -0700"
      },
      "message": "pstore: Allow the user to explicitly choose a backend\n\npstore only allows one backend to be registered at present, but the\nsystem may provide several. Add a parameter to allow the user to choose\nwhich backend will be used rather than just relying on load order.\n\nSigned-off-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "b94fdd077eef5e6cab56836bf62695b497946716",
      "tree": "f1278f560084e6689a88a4e47f81484ffdb113df",
      "parents": [
        "56280682ceeef74b692b3e21d1872049eea7c887"
      ],
      "author": {
        "name": "Matthew Garrett",
        "email": "mjg@redhat.com",
        "time": "Thu Jul 21 16:57:54 2011 -0400"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 22 16:14:29 2011 -0700"
      },
      "message": "pstore: Make \"part\" unsigned\n\nWe\u0027ll never have a negative part, so just make this an unsigned int.\n\nSigned-off-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "56280682ceeef74b692b3e21d1872049eea7c887",
      "tree": "6d00729db23dff065ad60bf2f7be3f96b6fd4008",
      "parents": [
        "638c1fd3033c76778e6d9975ad8a4a9cdd5b96d9"
      ],
      "author": {
        "name": "Matthew Garrett",
        "email": "mjg@redhat.com",
        "time": "Thu Jul 21 16:57:53 2011 -0400"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 22 16:14:20 2011 -0700"
      },
      "message": "pstore: Add extra context for writes and erases\n\nEFI only provides small amounts of individual storage, and conventionally\nputs metadata in the storage variable name. Rather than add a metadata\nheader to the (already limited) variable storage, it\u0027s easier for us to\nmodify pstore to pass all the information we need to construct a unique\nvariable name to the appropriate functions.\n\nSigned-off-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "638c1fd3033c76778e6d9975ad8a4a9cdd5b96d9",
      "tree": "de8b772157162b8a7a0901f4df5fb25faef6b21d",
      "parents": [
        "02f8c6aee8df3cdc935e9bdd4f2d020306035dbe"
      ],
      "author": {
        "name": "Matthew Garrett",
        "email": "mjg@redhat.com",
        "time": "Thu Jul 21 16:57:52 2011 -0400"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 22 16:14:06 2011 -0700"
      },
      "message": "pstore: Extend API for more flexibility in new backends\n\nSome pstore implementations may not have a static context, so extend the\nAPI to pass the pstore_info struct to all calls and allow for a context\npointer.\n\nSigned-off-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "06cf91b4b4aafa50ee0a94c81d2c6922a18af242",
      "tree": "f45fe916103b323a714c8958048b8adab1f944b1",
      "parents": [
        "8d38d74b648513dd8ed8bd2b67d899208ef4e09e"
      ],
      "author": {
        "name": "Chen Gong",
        "email": "gong.chen@linux.intel.com",
        "time": "Mon May 16 11:00:27 2011 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Mon May 16 11:05:00 2011 -0700"
      },
      "message": "pstore: fix pstore filesystem mount/remount issue\n\nCurrently after mount/remount operation on pstore filesystem,\nthe content on pstore will be lost. It is because current ERST\nimplementation doesn\u0027t support multi-user usage, which moves\ninternal pointer to the end after accessing it. Adding\nmulti-user support for pstore usage.\n\nSigned-off-by: Chen Gong \u003cgong.chen@linux.intel.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "8d38d74b648513dd8ed8bd2b67d899208ef4e09e",
      "tree": "9746a4273b2ffb68a298ce038eb196f0f65452bb",
      "parents": [
        "693d92a1bbc9e42681c42ed190bd42b636ca876f"
      ],
      "author": {
        "name": "Chen Gong",
        "email": "gong.chen@linux.intel.com",
        "time": "Mon May 16 10:58:57 2011 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Mon May 16 11:04:51 2011 -0700"
      },
      "message": "pstore: fix one type of return value in pstore\n\nthe return type of function _read_ in pstore is size_t,\nbut in the callback function of _read_, the logic doesn\u0027t\nconsider it too much, which means if negative value (assuming\nerror here) is returned, it will be converted to positive because\nof type casting. ssize_t is enough for this function.\n\nSigned-off-by: Chen Gong \u003cgong.chen@linux.intel.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\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": "9f6af27fb693c633cc46d36fc1d85efe6d6fbc17",
      "tree": "d5474b26be0995dbe650dcd0be79a9f046335315",
      "parents": [
        "eddecbb601c9ea3fab7e67d7892010fc9426d1e6"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Mar 22 16:01:49 2011 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Mar 22 16:01:49 2011 -0700"
      },
      "message": "pstore: cleanups to pstore_dump()\n\npstore_dump() can be called with many different \"reason\" codes. Save\nthe name of the code in the persistent store record.\n\nAlso - only worthwhile calling pstore_mkfile for KMSG_DUMP_OOPS - that\nis the only one where the kernel will continue running.\n\nReviewed-by: Seiji Aguchi \u003cseiji.aguchi@hds.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "366f7e7a79b19bd8c4e8f55fdf12b81538d1a7a4",
      "tree": "0c43335ab9e91ca895fdec82d1327cec16dcb645",
      "parents": [
        "10effcb548c170d59ea1d2152f2ee0ad45ce4c9d"
      ],
      "author": {
        "name": "Luck, Tony",
        "email": "tony.luck@intel.com",
        "time": "Fri Mar 18 15:33:43 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 21 13:50:05 2011 -0700"
      },
      "message": "pstore: use mount option instead sysfs to tweak kmsg_bytes\n\n/sys/fs is a somewhat strange way to tweak what could more\nobviously be tuned with a mount option.\n\nSuggested-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a872d5101008b091035d579897bccefdeff70def",
      "tree": "bd67c94ab043022f3ab0e9cf8954e5c69a10f37b",
      "parents": [
        "b7ed78f56575074f29ec99d8984f347f6c99c914"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Mar 18 11:44:48 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 21 00:45:38 2011 -0400"
      },
      "message": "pstore: fix leaking -\u003ei_private\n\nMove kfree() of i_private out of -\u003eunlink() and into -\u003eevict_inode()\n\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fbe0aa1f3d16fac5b641c0c1697371dcbe45b569",
      "tree": "fc4dc844d89ea78ec134fbe1bbcad3af00bad344",
      "parents": [
        "474a00ee1306eb7e82329fdc28b6471a99facba1"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@gmail.com",
        "time": "Thu Mar 17 16:29:15 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 17 22:08:13 2011 -0400"
      },
      "message": "Some fixes for pstore\n\n1) Change from -\u003eget_sb() to -\u003emount()\n2) Use mount_single() instead of mount_nodev()\n3) Pulled in ramfs_get_inode() \u0026 trimmed to what I need for pstore\n4) Drop the ugly pstore_writefile() Just save data using kmalloc() and\n   provide a pstore_file_read() that uses simple_read_from_buffer().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "168f2e14319aba3125946649604e858cbae85be6",
      "tree": "16a811b09a607ccb4e8de13da744b7167346ab8e",
      "parents": [
        "0bb77c465f02e8281e24b9f02e7dc8a7e2b81ee2"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Thu Jan 06 16:58:58 2011 -0800"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Thu Jan 06 16:58:58 2011 -0800"
      },
      "message": "pstore: fix build warning for unused return value from sysfs_create_file\n\nfs/pstore/inode.c: In function \u0027init_pstore_fs\u0027:\nfs/pstore/inode.c:266: warning: ignoring return value of \u0027sysfs_create_file\u0027, declared with attribute warn_unused_result\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "ca01d6dd2d7a2652000307520777538740efc286",
      "tree": "f419325637badb0ef7a3bfa29d520be2f5282220",
      "parents": [
        "90a8a73c06cc32b609a880d48449d7083327e11a"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Dec 28 14:25:21 2010 -0800"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Dec 28 14:25:21 2010 -0800"
      },
      "message": "pstore: new filesystem interface to platform persistent storage\n\nSome platforms have a small amount of non-volatile storage that\ncan be used to store information useful to diagnose the cause of\na system crash.  This is the generic part of a file system interface\nthat presents information from the crash as a series of files in\n/dev/pstore.  Once the information has been seen, the underlying\nstorage is freed by deleting the files.\n\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    }
  ]
}
