)]}'
{
  "log": [
    {
      "commit": "ba0c96cd9a361693b0bae409510d614dc0e26d0f",
      "tree": "b25ac2bece59445bd741a1ed4569756e878b3367",
      "parents": [
        "02957f92bcc96be5c84a4000f9d22c592158602e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 21 17:57:04 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 28 13:40:16 2012 -0800"
      },
      "message": "rfkill: don\u0027t use [delayed_]work_pending()\n\nThere\u0027s no need to test whether a (delayed) work item in pending\nbefore queueing, flushing or cancelling it.  Most uses are unnecessary\nand quite a few of them are buggy.\n\nRemove unnecessary pending tests from rfkill.  Only compile\ntested.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: \"John W. Linville\" \u003clinville@tuxdriver.com\u003e\nCc: linux-wireless@vger.kernel.org\n"
    },
    {
      "commit": "41f63c5359d14ca995172b8f6eaffd93f60fec54",
      "tree": "d3d93dfd25d2e29e8abeae934835f2266b018cb7",
      "parents": [
        "8376fe22c7e79c7e90857d39f82aeae6cad6c4b8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 03 10:30:47 2012 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 13 16:27:37 2012 -0700"
      },
      "message": "workqueue: use mod_delayed_work() instead of cancel + queue\n\nConvert delayed_work users doing cancel_delayed_work() followed by\nqueue_delayed_work() to mod_delayed_work().\n\nMost conversions are straight-forward.  Ones worth mentioning are,\n\n* drivers/edac/edac_mc.c: edac_mc_workq_setup() converted to always\n  use mod_delayed_work() and cancel loop in\n  edac_mc_reset_delay_period() is dropped.\n\n* drivers/platform/x86/thinkpad_acpi.c: No need to remember whether\n  watchdog is active or not.  @fan_watchdog_active and related code\n  dropped.\n\n* drivers/power/charger-manager.c: Seemingly a lot of\n  delayed_work_pending() abuse going on here.\n  [delayed_]work_pending() are unsynchronized and racy when used like\n  this.  I converted one instance in fullbatt_handler().  Please\n  conver the rest so that it invokes workqueue APIs for the intended\n  target state rather than trying to game work item pending state\n  transitions.  e.g. if timer should be modified - call\n  mod_delayed_work(), canceled - call cancel_delayed_work[_sync]().\n\n* drivers/thermal/thermal_sys.c: thermal_zone_device_set_polling()\n  simplified.  Note that round_jiffies() calls in this function are\n  meaningless.  round_jiffies() work on absolute jiffies not delta\n  delay used by delayed_work.\n\nv2: Tomi pointed out that __cancel_delayed_work() users can\u0027t be\n    safely converted to mod_delayed_work().  They could be calling it\n    from irq context and if that happens while delayed_work_timer_fn()\n    is running, it could deadlock.  __cancel_delayed_work() users are\n    dropped.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Dmitry Torokhov \u003cdmitry.torokhov@gmail.com\u003e\nAcked-by: Anton Vorontsov \u003ccbouatmailru@gmail.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Tomi Valkeinen \u003ctomi.valkeinen@ti.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\nCc: Doug Thompson \u003cdougthompson@xmission.com\u003e\nCc: David Airlie \u003cairlied@linux.ie\u003e\nCc: Roland Dreier \u003croland@kernel.org\u003e\nCc: \"John W. Linville\" \u003clinville@tuxdriver.com\u003e\nCc: Zhang Rui \u003crui.zhang@intel.com\u003e\nCc: Len Brown \u003clen.brown@intel.com\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\n"
    },
    {
      "commit": "d9b9384215e17c68d7b6bd05d6fa409e5d4140d7",
      "tree": "c6c05f056a623e7e7630bc76be7637e1b8454c86",
      "parents": [
        "3a9a231d977222eea36eae091df2c358e03ac839"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Sep 18 13:21:27 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:30:29 2011 -0400"
      },
      "message": "net: add moduleparam.h for users of module_param/MODULE_PARM_DESC\n\nThese files were getting access to these two via the implicit\npresence of module.h everywhere.  They aren\u0027t modules, so they\ndon\u0027t need the full module.h inclusion though.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "a02cec2155fbea457eca8881870fd2de1a4c4c76",
      "tree": "cfbfc4b32bfe10f9cd803d46c31607d13f1858f5",
      "parents": [
        "6a08d194ee40806e0ccd5f36ed768e64cbfc979f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Sep 22 20:43:57 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 23 14:33:39 2010 -0700"
      },
      "message": "net: return operator cleanup\n\nChange \"return (EXPR);\" to \"return EXPR;\"\n\nreturn is not a function, parentheses are not required.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3082a2b7b1af1b1508c1c3fa589566064f926f40",
      "tree": "9f0a57f92e3aadf10c033685485f2d1b50569b78",
      "parents": [
        "6510b8917948283005a125c8337d3312a8a0561c"
      ],
      "author": {
        "name": "Matthew Garrett",
        "email": "mjg@redhat.com",
        "time": "Tue Feb 16 16:36:25 2010 -0500"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Mar 02 14:28:49 2010 -0500"
      },
      "message": "rfkill: Add support for KEY_RFKILL\n\nAdd support for handling KEY_RFKILL in the rfkill input module. This\nsimply toggles the state of all rfkill devices. The comment in rfkill.h\nis also updated to reflect that RFKILL_TYPE_ALL may be used inside the\nkernel.\n\nSigned-off-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nAcked-by: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "19d337dff95cbf76edd3ad95c0cee2732c3e1ec5",
      "tree": "33326eeb09cb9664cc8427a5dc7cd2b08b5a57c3",
      "parents": [
        "0f6399c4c525b518644a9b09f8d6fb125a418c4d"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Jun 02 13:01:37 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jun 03 14:06:13 2009 -0400"
      },
      "message": "rfkill: rewrite\n\nThis patch completely rewrites the rfkill core to address\nthe following deficiencies:\n\n * all rfkill drivers need to implement polling where necessary\n   rather than having one central implementation\n\n * updating the rfkill state cannot be done from arbitrary\n   contexts, forcing drivers to use schedule_work and requiring\n   lots of code\n\n * rfkill drivers need to keep track of soft/hard blocked\n   internally -- the core should do this\n\n * the rfkill API has many unexpected quirks, for example being\n   asymmetric wrt. alloc/free and register/unregister\n\n * rfkill can call back into a driver from within a function the\n   driver called -- this is prone to deadlocks and generally\n   should be avoided\n\n * rfkill-input pointlessly is a separate module\n\n * drivers need to #ifdef rfkill functions (unless they want to\n   depend on or select RFKILL) -- rfkill should provide inlines\n   that do nothing if it isn\u0027t compiled in\n\n * the rfkill structure is not opaque -- drivers need to initialise\n   it correctly (lots of sanity checking code required) -- instead\n   force drivers to pass the right variables to rfkill_alloc()\n\n * the documentation is hard to read because it always assumes the\n   reader is completely clueless and contains way TOO MANY CAPS\n\n * the rfkill code needlessly uses a lot of locks and atomic\n   operations in locked sections\n\n * fix LED trigger to actually change the LED when the radio state\n   changes -- this wasn\u0027t done before\n\nTested-by: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e [thinkpad]\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    }
  ]
}
