)]}'
{
  "commit": "02bde22f757039b5eee240440a808772d104056c",
  "tree": "85266c42a59ba11fd7e54e99c7c7fb8335f2a20a",
  "parents": [
    "e5cf1f8e2be88970ce50f356992c6d4fcae27d2f"
  ],
  "author": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Tue Jan 06 13:00:05 2015 -0800"
  },
  "committer": {
    "name": "William Bellavance",
    "email": "flintman@flintmancomputers.com",
    "time": "Wed Feb 10 20:00:34 2016 -0500"
  },
  "message": "mm: propagate error from stack expansion even for guard page\n\ncommit fee7e49d45149fba60156f5b59014f764d3e3728 upstream.\n\nJay Foad reports that the address sanitizer test (asan) sometimes gets\nconfused by a stack pointer that ends up being outside the stack vma\nthat is reported by /proc/maps.\n\nThis happens due to an interaction between RLIMIT_STACK and the guard\npage: when we do the guard page check, we ignore the potential error\nfrom the stack expansion, which effectively results in a missing guard\npage, since the expected stack expansion won\u0027t have been done.\n\nAnd since /proc/maps explicitly ignores the guard page (commit\nd7824370e263: \"mm: fix up some user-visible effects of the stack guard\npage\"), the stack pointer ends up being outside the reported stack area.\n\nThis is the minimal patch: it just propagates the error.  It also\neffectively makes the guard page part of the stack limit, which in turn\nmeasn that the actual real stack is one page less than the stack limit.\n\nLet\u0027s see if anybody notices.  We could teach acct_stack_growth() to\nallow an extra page for a grow-up/grow-down stack in the rlimit test,\nbut I don\u0027t want to add more complexity if it isn\u0027t needed.\n\nReported-and-tested-by: Jay Foad \u003cjay.foad@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Zefan Li \u003clizefan@huawei.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ee29fbe03f2dfc341b57f35b05fb9c9997046871",
      "old_mode": 33188,
      "old_path": "include/linux/mm.h",
      "new_id": "bce43995444b175a9267f4c5ce32e36486cd9f91",
      "new_mode": 33188,
      "new_path": "include/linux/mm.h"
    },
    {
      "type": "modify",
      "old_id": "95d289791705574fe1ca8738309b486b89cb3895",
      "old_mode": 33188,
      "old_path": "mm/memory.c",
      "new_id": "f715124932ba1f79bfa1e8f9e61adc625673e3db",
      "new_mode": 33188,
      "new_path": "mm/memory.c"
    }
  ]
}
