{"push_id":1292763860,"size":27,"distinct_size":27,"ref":"refs/heads/cm-14.0","head":"b52ea3ae714b7cde423f5983dec93176caab1834","before":"323bb42d74b91ca21058124ad10829ace0046c16","commits":[{"sha":"ca1d53408f521ed6c937549f68260c8fcf5b0f5b","author":{"name":"Jeff Vander Stoep","email":"3c7c1df314a95c4ce859cc668e778f3e3567dbe8@google.com"},"message":"Revert \"SELinux: ss: Fix policy write for ioctl operations\"\n\nThis reverts commit 8cdfb356b51e29494ca0b9e4e86727d6f841a52d.\n\nBug: 22846070\nChange-Id: I4dd2fd5a1d7fb3ae8f74a5decdf8fb9d5cd43def\nSigned-off-by: Jeff Vander Stoep <jeffv@google.com>\n(cherry picked from commit 7b3c6a6d9651f11bf6d2fdf740c8d99e3594bab1)","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/ca1d53408f521ed6c937549f68260c8fcf5b0f5b"},{"sha":"5d846b22dae6805f3d1ce4814ce423ef706a10f9","author":{"name":"Jeff Vander Stoep","email":"3c7c1df314a95c4ce859cc668e778f3e3567dbe8@google.com"},"message":"Revert \"SELinux: use deletion-safe iterator to free list\"\n\nThis reverts commit 98a4d82a78914c2496989d669ecae04dedcf361f.\n\nBug: 22846070\nChange-Id: Ic047824591e8d94f937c052846ab387864c04fd7\nSigned-off-by: Jeff Vander Stoep <jeffv@google.com>\n(cherry picked from commit f8fd7821ad607127e585a911f583960b79a488c7)","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/5d846b22dae6805f3d1ce4814ce423ef706a10f9"},{"sha":"3b0961c95004b7fd75b435742e774c219f38ecdd","author":{"name":"Jeff Vander Stoep","email":"3c7c1df314a95c4ce859cc668e778f3e3567dbe8@google.com"},"message":"Revert \"SELinux: per-command whitelisting of ioctls\"\n\nThis reverts commit 8daca972e410f42a4fc1fe2de804c50013b24a28.\n\nBug: 22846070\nChange-Id: Ia2d1e2b0f46ccb0328626286216e38378650505b\nSigned-off-by: Jeff Vander Stoep <jeffv@google.com>\n(cherry picked from commit 031944365e88581f5e7737fdab36fa609ffd7937)","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/3b0961c95004b7fd75b435742e774c219f38ecdd"},{"sha":"b3fe820482250e7dd7a179e890cfad03b8c993b4","author":{"name":"Jeff Vander Stoep","email":"3c7c1df314a95c4ce859cc668e778f3e3567dbe8@google.com"},"message":"selinux: remove unnecessary pointer reassignment\n\n(cherry pick from commit 83d4a806ae46397f606de7376b831524bd3a21e5)\n\nCommit f01e1af445fa (\"selinux: don't pass in NULL avd to avc_has_perm_noaudit\")\nmade this pointer reassignment unnecessary. Avd should continue to reference\nthe stack-based copy.\n\nSigned-off-by: Jeff Vander Stoep <jeffv@google.com>\nAcked-by: Stephen Smalley <sds@tycho.nsa.gov>\n[PM: tweaked subject line]\nSigned-off-by: Paul Moore <pmoore@redhat.com>\nBug: 22846070\nChange-Id: I4aef4b95820e813c370525310e37f5da22d25efc\n\n(cherry picked from commit b501c5278ddc2c6dbb7cafb2eeaf39245691ab69)","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/b3fe820482250e7dd7a179e890cfad03b8c993b4"},{"sha":"6fbe8456204998077715d39439bb40d4d389697b","author":{"name":"Jeff Vander Stoep","email":"3c7c1df314a95c4ce859cc668e778f3e3567dbe8@google.com"},"message":"selinux: extended permissions for ioctls\n\n(cherry picked from commit fa1aa143ac4a682c7f5fd52a3cf05f5a6fe44a0a)\n\nAdd extended permissions logic to selinux. Extended permissions\nprovides additional permissions in 256 bit increments. Extend the\ngeneric ioctl permission check to use the extended permissions for\nper-command filtering. Source/target/class sets including the ioctl\npermission may additionally include a set of commands. Example:\n\nallowxperm <source> <target>:<class> ioctl unpriv_app_socket_cmds\nauditallowxperm <source> <target>:<class> ioctl priv_gpu_cmds\n\nWhere unpriv_app_socket_cmds and priv_gpu_cmds are macros\nrepresenting commonly granted sets of ioctl commands.\n\nWhen ioctl commands are omitted only the permissions are checked.\nThis feature is intended to provide finer granularity for the ioctl\npermission that may be too imprecise. For example, the same driver\nmay use ioctls to provide important and benign functionality such as\ndriver version or socket type as well as dangerous capabilities such\nas debugging features, read/write/execute to physical memory or\naccess to sensitive data. Per-command filtering provides a mechanism\nto reduce the attack surface of the kernel, and limit applications\nto the subset of commands required.\n\nThe format of the policy binary has been modified to include ioctl\ncommands, and the policy version number has been incremented to\nPOLICYDB_VERSION_XPERMS_IOCTL=30 to account for the format\nchange.\n\nThe extended permissions logic is deliberately generic to allow\ncomponents to be reused e.g. netlink filters\n\nSigned-off-by: Jeff Vander Stoep <jeffv@google.com>\nAcked-by: Nick Kralevich <nnk@google.com>\nSigned-off-by: Paul Moore <pmoore@redhat.com>\nBug: 22846070\nChange-Id: I1573d6b2d0ced27e82b6447318aa5b3065021a5b\n(cherry picked from commit 0599dbc940a9d0ff241769fced44ff2a9aa51dc7)","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/6fbe8456204998077715d39439bb40d4d389697b"},{"sha":"1995f527024aa14188c39c7b0f04072160d55a71","author":{"name":"Jeff Vander Stoep","email":"3c7c1df314a95c4ce859cc668e778f3e3567dbe8@google.com"},"message":"selinux: Android kernel compatibility with M userspace\n\nNOT intended for new Android devices - this commit is unnecessary\nfor a target device that does not have a previous M variant.\n\nDO NOT upstream. Android only.\n\nMotivation:\n\nThis commit mitigates a mismatch between selinux kernel and\nselinux userspace. The selinux ioctl white-listing binary policy\nformat that was accepted into Android M differs slightly from what\nwas later accepted into the upstream kernel. This leaves Android\nmaster branch kernels incompatible with Android M releases. This\npatch restores backwards compatibility. This is important because:\n\n1. kernels may be updated on a different cycle than the rest of the\n   OS e.g. security patching.\n2. Android M bringup may still be ongoing for some devices. The\n   same kernel should work for both M and master.\n\nBackwards compatibility is achieved by checking for an Android M\npolicy characteristic during initial policy read and converting to\nupstream policy format. The inverse conversion is done for policy\nwrite as required for CTS testing.\n\nBug: 22846070\nChange-Id: I2f1ee2eee402f37cf3c9df9f9e03c1b9ddec1929\nSigned-off-by: Jeff Vander Stoep <jeffv@google.com>\n(cherry picked from commit 52687d29b62f2ee22ee75a8304130391ad9f5226)","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/1995f527024aa14188c39c7b0f04072160d55a71"},{"sha":"16d75f07f00b99dc2516c3e94890a8e590fa49ce","author":{"name":"Jeff Vander Stoep","email":"3c7c1df314a95c4ce859cc668e778f3e3567dbe8@google.com"},"message":"selinux: do not check open perm on ftruncate call\n\nUse the ATTR_FILE attribute to distinguish between truncate()\nand ftruncate() system calls. The two other cases where\ndo_truncate is called with a filp (and therefore ATTR_FILE is set)\nare for coredump files and for open(O_TRUNC). In both of those cases\nthe open permission has already been checked during file open and\ntherefore does not need to be repeated.\n\nCommit 95dbf739313f (\"SELinux: check OPEN on truncate calls\")\nfixed a major issue where domains were allowed to truncate files\nwithout the open permission. However, it introduced a new bug where\na domain with the write permission can no longer ftruncate files\nwithout the open permission, even when they receive an already open\nfile.\n\n(cherry picked from commit b21800f304392ee5d20f411c37470183cc779f11)\n\nBug: 22567870\nChange-Id: Id7c305e46beba5091c2c777529bd468216aae1c3\n\nSigned-off-by: Jeff Vander Stoep <jeffv@google.com>\nAcked-by: Stephen Smalley <sds@tycho.nsa.gov>\nSigned-off-by: Paul Moore <pmoore@redhat.com>\n(cherry picked from commit df46bc83c1fc9b64b2e86290935a3ad550b2e56e)","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/16d75f07f00b99dc2516c3e94890a8e590fa49ce"},{"sha":"11501455315f565104bd421a163af2e99fdfe919","author":{"name":"Stephen Smalley","email":"a113c662ba7e86bc1a8f97e28bfedcdc6b0de5bd@tycho.nsa.gov"},"message":"UPSTREAM: selinux: fix bug in conditional rules handling\n\n(cherry picked from commit commit f3bef67992e8698897b584616535803887c4a73e)\n\ncommit fa1aa143ac4a (\"selinux: extended permissions for ioctls\")\nintroduced a bug into the handling of conditional rules, skipping the\nprocessing entirely when the caller does not provide an extended\npermissions (xperms) structure.  Access checks from userspace using\n/sys/fs/selinux/access do not include such a structure since that\ninterface does not presently expose extended permission information.\nAs a result, conditional rules were being ignored entirely on userspace\naccess requests, producing denials when access was allowed by\nconditional rules in the policy.  Fix the bug by only skipping\ncomputation of extended permissions in this situation, not the entire\nconditional rules processing.\n\nChange-Id: I6f81765f6cdb9ce72f93c290d7987d93688651a0\nReported-by: Laurent Bigonville <bigon@debian.org>\nSigned-off-by: Stephen Smalley <sds@tycho.nsa.gov>\n[PM: fixed long lines in patch description]\nCc: stable@vger.kernel.org # 4.3\nSigned-off-by: Paul Moore <pmoore@redhat.com>","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/11501455315f565104bd421a163af2e99fdfe919"},{"sha":"fece0686111c5727a660b10d553aaaffd918add2","author":{"name":"Eric Dumazet","email":"b3d77ad2db30f558882cc0c038be5a3cf96611f9@google.com"},"message":"net: add sk_fullsock() helper\n\nWe have many places where we want to check if a socket is\nnot a timewait or request socket. Use a helper to avoid\nhard coding this.\n\nSigned-off-by: Eric Dumazet <edumazet@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\n\n[backported from net-next 1d0ab253872cdd3d8e7913f59c266c7fd01771d0]\n[lorenzo@google.com: removed TCPF_NEW_SYN_RECV, and added a comment to add it back.]\n\nSigned-off-by: Lorenzo Colitti <lorenzo@google.com>\n\nBug: 24163529\nChange-Id: Ibf09017e1ab00af5e6925273117c335d7f515d73","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/fece0686111c5727a660b10d553aaaffd918add2"},{"sha":"36225131dd3b2443ba569dc3c05673a99048827c","author":{"name":"Eric Dumazet","email":"b3d77ad2db30f558882cc0c038be5a3cf96611f9@google.com"},"message":"ipv6: inet6_sk() should use sk_fullsock()\n\nSYN_RECV & TIMEWAIT sockets are not full blown, they do not have a pinet6\npointer.\n\nBug: 24163529\nChange-Id: I6ce67a190d67d200c6ebeb81d2daeb9c86cd7581\nFixes: ca6fb0651883 (\"tcp: attach SYNACK messages to request sockets instead of listener\")\nSigned-off-by: Eric Dumazet <edumazet@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Lorenzo Colitti <lorenzo@google.com>","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/36225131dd3b2443ba569dc3c05673a99048827c"},{"sha":"52ebaa96b2ccefb0276f9cbe93d5c036dc26062a","author":{"name":"Lorenzo Colitti","email":"bb03c7a1072f7993eaae5ac54ef7bc06e4588478@google.com"},"message":"net: diag: split inet_diag_dump_one_icsk into two\n\nCurrently, inet_diag_dump_one_icsk finds a socket and then dumps\nits information to userspace. Split it into a part that finds the\nsocket and a part that dumps the information.\n\n[Backport of net-next b613f56ec9baf30edf5d9d607b822532a273dad7]\n\nChange-Id: I7aec27aca9c3e395e41332fe4e59d720042e0609\nSigned-off-by: Lorenzo Colitti <lorenzo@google.com>\nAcked-by: Eric Dumazet <edumazet@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/52ebaa96b2ccefb0276f9cbe93d5c036dc26062a"},{"sha":"c301f7a83b761d63d9ed236ca1df4cc66647f3cc","author":{"name":"Lorenzo Colitti","email":"bb03c7a1072f7993eaae5ac54ef7bc06e4588478@google.com"},"message":"net: diag: Add the ability to destroy a socket.\n\nThis patch adds a SOCK_DESTROY operation, a destroy function\npointer to sock_diag_handler, and a diag_destroy function\npointer.  It does not include any implementation code.\n\n[Backport of net-next 64be0aed59ad519d6f2160868734f7e278290ac1]\n\nChange-Id: I3db262a7e41f1f8452ff0968d4001234598190d8\nSigned-off-by: Lorenzo Colitti <lorenzo@google.com>\nAcked-by: Eric Dumazet <edumazet@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/c301f7a83b761d63d9ed236ca1df4cc66647f3cc"},{"sha":"4c08f9285b100cab474fe1611a7ba66059650536","author":{"name":"Lorenzo Colitti","email":"bb03c7a1072f7993eaae5ac54ef7bc06e4588478@google.com"},"message":"net: diag: Support SOCK_DESTROY for inet sockets.\n\nThis passes the SOCK_DESTROY operation to the underlying protocol\ndiag handler, or returns -EOPNOTSUPP if that handler does not\ndefine a destroy operation.\n\nMost of this patch is just renaming functions. This is not\nstrictly necessary, but it would be fairly counterintuitive to\nhave the code to destroy inet sockets be in a function whose name\nstarts with inet_diag_get.\n\n[Backport of net-next 6eb5d2e08f071c05ecbe135369c9ad418826cab2]\n\nChange-Id: Iee2c858bf11c48f54890b85b87821a2a2d7109e1\nSigned-off-by: Lorenzo Colitti <lorenzo@google.com>\nAcked-by: Eric Dumazet <edumazet@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/4c08f9285b100cab474fe1611a7ba66059650536"},{"sha":"f7fae73460e6f2cc18478ead11eca93bcc668728","author":{"name":"Lorenzo Colitti","email":"bb03c7a1072f7993eaae5ac54ef7bc06e4588478@google.com"},"message":"net: diag: Support destroying TCP sockets.\n\nThis implements SOCK_DESTROY for TCP sockets. It causes all\nblocking calls on the socket to fail fast with ECONNABORTED and\ncauses a protocol close of the socket. It informs the other end\nof the connection by sending a RST, i.e., initiating a TCP ABORT\nas per RFC 793. ECONNABORTED was chosen for consistency with\nFreeBSD.\n\n[Backport of net-next c1e64e298b8cad309091b95d8436a0255c84f54a]\n\nChange-Id: Ice9aad37741fe497341d1d2a51e0b70601a99c90\nSigned-off-by: Lorenzo Colitti <lorenzo@google.com>\nAcked-by: Eric Dumazet <edumazet@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/f7fae73460e6f2cc18478ead11eca93bcc668728"},{"sha":"c2342c18f62a325797f4dae09f71b20b1335367c","author":{"name":"Lorenzo Colitti","email":"bb03c7a1072f7993eaae5ac54ef7bc06e4588478@google.com"},"message":"net: tcp: deal with listen sockets properly in tcp_abort.\n\nWhen closing a listen socket, tcp_abort currently calls\ntcp_done without clearing the request queue. If the socket has a\nchild socket that is established but not yet accepted, the child\nsocket is then left without a parent, causing a leak.\n\nFix this by setting the socket state to TCP_CLOSE and calling\ninet_csk_listen_stop with the socket lock held, like tcp_close\ndoes.\n\nTested using net_test. With this patch, calling SOCK_DESTROY on a\nlisten socket that has an established but not yet accepted child\nsocket results in the parent and the child being closed, such\nthat they no longer appear in sock_diag dumps.\n\n[Backport of net-next 2010b93e9317cc12acd20c4aed385af7f9d1681e]\n\nChange-Id: I2b9c38fab194b3c4e11439047ead9582c811d4c2\nReported-by: Eric Dumazet <eric.dumazet@gmail.com>\nSigned-off-by: Lorenzo Colitti <lorenzo@google.com>\nAcked-by: Eric Dumazet <edumazet@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/c2342c18f62a325797f4dae09f71b20b1335367c"},{"sha":"446a779febf96cf4954449abf939e919ef54b248","author":{"name":"Lorenzo Colitti","email":"bb03c7a1072f7993eaae5ac54ef7bc06e4588478@google.com"},"message":"selinux: nlmsgtab: add SOCK_DESTROY to the netlink mapping tables\n\nWithout this, using SOCK_DESTROY in enforcing mode results in:\n\n  SELinux: unrecognized netlink message type=21 for sclass=32\n\nChange-Id: I7862bb0fc83573567243ffa9549a2c7405b5986c","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/446a779febf96cf4954449abf939e919ef54b248"},{"sha":"54b5bcc63a28c288d72819bc3b2af942efffa2c1","author":{"name":"dcashman","email":"3d629d435dc38ffde22fdd784f2eb4e36e384463@google.com"},"message":"FROMLIST: drivers: char: random: add get_random_long()\n\n(cherry picked from commit https://lkml.org/lkml/2016/2/4/831)\n\nd07e22597d1d355 (\"mm: mmap: add new /proc tunable for mmap_base ASLR\")\nadded the ability to choose from a range of values to use for entropy\ncount in generating the random offset to the mmap_base address.  The\nmaximum value on this range was set to 32 bits for 64-bit x86 systems, but\nthis value could be increased further, requiring more than the 32 bits of\nrandomness provided by get_random_int(), as is already possible for arm64.\nAdd a new function: get_random_long() which more naturally fits with the\nmmap usage of get_random_int() but operates exactly the same as\nget_random_int().\n\nAlso, fix the shifting constant in mmap_rnd() to be an unsigned long so\nthat values greater than 31 bits generate an appropriate mask without\noverflow.  This is especially important on x86, as its shift instruction\nuses a 5-bit mask for the shift operand, which meant that any value for\nmmap_rnd_bits over 31 acts as a no-op and effectively disables mmap_base\nrandomization.\n\nFinally, replace calls to get_random_int() with get_random_long() where\nappropriate.\n\nBug: 26963541\nSigned-off-by: Daniel Cashman <dcashman@android.com>\nSigned-off-by: Daniel Cashman <dcashman@google.com>\nChange-Id: Ie7552631b5db86f3482cf15e7dc916d89c1c502b","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/54b5bcc63a28c288d72819bc3b2af942efffa2c1"},{"sha":"bd4dbc060217aafc4bf99ce5a3735e47ba2d21d0","author":{"name":"dcashman","email":"3d629d435dc38ffde22fdd784f2eb4e36e384463@google.com"},"message":"BACKPORT: FROMLIST: arm64: mm: support ARCH_MMAP_RND_BITS.\n\n(cherry picked from commit https://lkml.org/lkml/2015/12/21/340)\n\narm64: arch_mmap_rnd() uses STACK_RND_MASK to generate the\nrandom offset for the mmap base address.  This value represents a\ncompromise between increased ASLR effectiveness and avoiding\naddress-space fragmentation. Replace it with a Kconfig option, which\nis sensibly bounded, so that platform developers may choose where to\nplace this compromise. Keep default values as new minimums.\n\nBug: 24047224\nSigned-off-by: Daniel Cashman <dcashman@android.com>\nSigned-off-by: Daniel Cashman <dcashman@google.com>\nChange-Id: I7caf105b838cfc3ab55f275e1a061eb2b77c9a2a\n(cherry picked from commit 0896a27b57016186a34b634198d52fe61e007355)","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/bd4dbc060217aafc4bf99ce5a3735e47ba2d21d0"},{"sha":"074fba216cfbafc178c9e83476a50ce33405fb85","author":{"name":"dcashman","email":"3d629d435dc38ffde22fdd784f2eb4e36e384463@google.com"},"message":"FROMLIST: arm: mm: support ARCH_MMAP_RND_BITS.\n\n(cherry picked from commit https://lkml.org/lkml/2015/12/21/341)\n\narm: arch_mmap_rnd() uses a hard-code value of 8 to generate the\nrandom offset for the mmap base address.  This value represents a\ncompromise between increased ASLR effectiveness and avoiding\naddress-space fragmentation. Replace it with a Kconfig option, which\nis sensibly bounded, so that platform developers may choose where to\nplace this compromise. Keep 8 as the minimum acceptable value.\n\nBug: 24047224\nSigned-off-by: Daniel Cashman <dcashman@android.com>\nSigned-off-by: Daniel Cashman <dcashman@google.com>\nChange-Id: I2f6c18a0060e1c21b53200ecdcfde9a8c2e3db98","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/074fba216cfbafc178c9e83476a50ce33405fb85"},{"sha":"a234f8fda0b6b8f79938643d81476d8ea76416f5","author":{"name":"dcashman","email":"3d629d435dc38ffde22fdd784f2eb4e36e384463@google.com"},"message":"FROMLIST: x86: mm: support ARCH_MMAP_RND_BITS.\n\n(cherry picked from commit https://lkml.org/lkml/2015/12/21/339)\n\nx86: arch_mmap_rnd() uses hard-coded values, 8 for 32-bit and 28 for\n64-bit, to generate the random offset for the mmap base address.\nThis value represents a compromise between increased ASLR\neffectiveness and avoiding address-space fragmentation. Replace it\nwith a Kconfig option, which is sensibly bounded, so that platform\ndevelopers may choose where to place this compromise. Keep default\nvalues as new minimums.\n\nBug: 24047224\nSigned-off-by: Daniel Cashman <dcashman@android.com>\nSigned-off-by: Daniel Cashman <dcashman@google.com>\nChange-Id: I4f0cb7159406166fbc9f8938ba8d3e24b72eeefb\n(cherry picked from commit aa35bbf35451475dfc7c31ce5f97975c5542bd2e)","distinct":true,"url":"https://api.github.com/repos/StanHardy/android_kernel_lge_msm8992/commits/a234f8fda0b6b8f79938643d81476d8ea76416f5"}]}
{"actor":{"display_login":"StanHardy"}}