|
@@ -533,8 +533,6 @@ static int bad_syscall(int n, struct pt_regs *regs)
|
|
return regs->ARM_r0;
|
|
return regs->ARM_r0;
|
|
}
|
|
}
|
|
|
|
|
|
-static long do_cache_op_restart(struct restart_block *);
|
|
|
|
-
|
|
|
|
static inline int
|
|
static inline int
|
|
__do_cache_op(unsigned long start, unsigned long end)
|
|
__do_cache_op(unsigned long start, unsigned long end)
|
|
{
|
|
{
|
|
@@ -543,24 +541,8 @@ __do_cache_op(unsigned long start, unsigned long end)
|
|
do {
|
|
do {
|
|
unsigned long chunk = min(PAGE_SIZE, end - start);
|
|
unsigned long chunk = min(PAGE_SIZE, end - start);
|
|
|
|
|
|
- if (signal_pending(current)) {
|
|
|
|
- struct thread_info *ti = current_thread_info();
|
|
|
|
-
|
|
|
|
- ti->restart_block = (struct restart_block) {
|
|
|
|
- .fn = do_cache_op_restart,
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- ti->arm_restart_block = (struct arm_restart_block) {
|
|
|
|
- {
|
|
|
|
- .cache = {
|
|
|
|
- .start = start,
|
|
|
|
- .end = end,
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- return -ERESTART_RESTARTBLOCK;
|
|
|
|
- }
|
|
|
|
|
|
+ if (fatal_signal_pending(current))
|
|
|
|
+ return 0;
|
|
|
|
|
|
ret = flush_cache_user_range(start, start + chunk);
|
|
ret = flush_cache_user_range(start, start + chunk);
|
|
if (ret)
|
|
if (ret)
|
|
@@ -573,15 +555,6 @@ __do_cache_op(unsigned long start, unsigned long end)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static long do_cache_op_restart(struct restart_block *unused)
|
|
|
|
-{
|
|
|
|
- struct arm_restart_block *restart_block;
|
|
|
|
-
|
|
|
|
- restart_block = ¤t_thread_info()->arm_restart_block;
|
|
|
|
- return __do_cache_op(restart_block->cache.start,
|
|
|
|
- restart_block->cache.end);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static inline int
|
|
static inline int
|
|
do_cache_op(unsigned long start, unsigned long end, int flags)
|
|
do_cache_op(unsigned long start, unsigned long end, int flags)
|
|
{
|
|
{
|