GitHub PushEvent at 2014-09-07 04:06:11
Repository: hardenedBSD
Actor: opntr-auto
Payload: {"shas":[["1e706702bd14e7d6c5f41f15ee0b520bd11c4933","44592b4eea36663c86b994bb0ea99d15309c1c7d@FreeBSD.org","Fix the PCPU access macros. It was found that the PCPU pointer, when\nheld in register r13, is used outside the bounds of critical_enter()\nand critical_exit() by virtue of optimizations performed by the\ncompiler. The net effect being that address computations of fields\nin the PCPU structure could be relative to the PCPU structure of the\nCPU on which the address computation was performed and not related\nto the CPU that executes the actual load or store operation.\nThe typical failure mode being that the per-CPU cache of UMA got\ncorrupted due to accesses from other CPUs.\n\nAdding more volatile decorating to the register expression does not\nhelp. The thinking being that volatile is assumed to work on memory\nreferences and not register references. Thus, the fix is to perform\nthe address computation using a volatile inline assembly statement.\n\nAdditionally, since the reference is fundamentally non-atomic on ia64\nby virtue of have a distinct address computation followed by the\nactual load or store operation, it is required to wrap the entire\nPCPU access in a critical section.\n\nWith PCPU_GET and friends requiring curthread now that they're in a\ncritical section, low-level use of these macros in functions like\ncpu_switch() is not possible anymore. Consequently, a second order\nset of changes is needed to avoid using PCPU_GET and friends where\ncurthread is either not set yet, or in the process of being changed.\nIn those cases, explicit dereferencing of pcpup is needed. In those\ncases it is also possible to do that.\n\nThis is a direct commit to stable/10.\n\nApproved by:\tre@ (marius)","marcel",true],["f971f9cd086bb76934b413eff6e3eca9198211c3","3bae1b7d571c203acfb4d62748e2c04607e018fd@FreeBSD.org","MFC r269701:\n\nSet the si_code appropriately for exception-caused signals.\n\nLLDB checks the si_code, and aborts if a code isn't known.\n\nApproved by:\tre (gjb)\nRelnotes:\tyes","jhibbits",true],["b6cfb220f7437cd349e531e2a4db9338ab6521b4","a9bdedfba877c39b2c34ab943d5bac42650cd87b@FreeBSD.org","MFC r271078:\n  Fix typo: s/_maske/_mask/\n\nApproved by:\tre (rodrigc)\nSponsored by:\tThe FreeBSD Foundation","gjb",true]],"size":3,"ref":"refs/heads/stable/10","head":"b6cfb220f7437cd349e531e2a4db9338ab6521b4"}