diff options
author | Tiejun Chen <tiejun.chen@windriver.com> | 2012-06-06 20:56:43 +0000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-06-29 14:35:35 +1000 |
commit | c58ce2b1e3c75c55e7ebf751afce9f5a30f60b42 (patch) | |
tree | fdc5569cb1afea0afeb09eb818d194f17bdecc11 /arch/avr32/boot | |
parent | 82b2521d257b5c0efd51821cf5fa306e53bbb6ba (diff) | |
download | talos-obmc-linux-c58ce2b1e3c75c55e7ebf751afce9f5a30f60b42.tar.gz talos-obmc-linux-c58ce2b1e3c75c55e7ebf751afce9f5a30f60b42.zip |
ppc64: fix missing to check all bits of _TIF_USER_WORK_MASK in preempt
In entry_64.S version of ret_from_except_lite, you'll notice that
in the !preempt case, after we've checked MSR_PR we test for any
TIF flag in _TIF_USER_WORK_MASK to decide whether to go to do_work
or not. However, in the preempt case, we do a convoluted trick to
test SIGPENDING only if PR was set and always test NEED_RESCHED ...
but we forget to test any other bit of _TIF_USER_WORK_MASK !!! So
that means that with preempt, we completely fail to test for things
like single step, syscall tracing, etc...
This should be fixed as the following path:
- Test PR. If not set, go to resume_kernel, else continue.
- If go resume_kernel, to do that original do_work.
- If else, then always test for _TIF_USER_WORK_MASK to decide to do
that original user_work, else restore directly.
Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/avr32/boot')
0 files changed, 0 insertions, 0 deletions