xtensa: add missing exclusive access state management
commit a0fc1436 upstream. The result of the s32ex opcode is recorded in the ATOMCTL special register and must be retrieved with the getex opcode. Context switch between s32ex and getex may trash the ATOMCTL register and result in duplicate update or missing update of the atomic variable. Add atomctl8 field to the struct thread_info and use getex to swap ATOMCTL bit 8 as a part of context switch. Clear exclusive access monitor on kernel entry. Cc: stable@vger.kernel.org Fixes: f7c34874 ("xtensa: add exclusive atomics support") Signed-off-by:Max Filippov <jcmvbkbc@gmail.com> Signed-off-by:
Paul Gortmaker <paul.gortmaker@windriver.com>
parent
d7a0ae03
Please register or sign in to comment