diff options
Diffstat (limited to 'arch/tile/kernel/process.c')
| -rw-r--r-- | arch/tile/kernel/process.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c index 6be799150501..307d010696c9 100644 --- a/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c | |||
| @@ -548,6 +548,9 @@ int do_work_pending(struct pt_regs *regs, u32 thread_info_flags) | |||
| 548 | if (!user_mode(regs)) | 548 | if (!user_mode(regs)) |
| 549 | return 0; | 549 | return 0; |
| 550 | 550 | ||
| 551 | /* Enable interrupts; they are disabled again on return to caller. */ | ||
| 552 | local_irq_enable(); | ||
| 553 | |||
| 551 | if (thread_info_flags & _TIF_NEED_RESCHED) { | 554 | if (thread_info_flags & _TIF_NEED_RESCHED) { |
| 552 | schedule(); | 555 | schedule(); |
| 553 | return 1; | 556 | return 1; |
| @@ -594,13 +597,13 @@ SYSCALL_DEFINE4(execve, const char __user *, path, | |||
| 594 | struct pt_regs *, regs) | 597 | struct pt_regs *, regs) |
| 595 | { | 598 | { |
| 596 | long error; | 599 | long error; |
| 597 | char *filename; | 600 | struct filename *filename; |
| 598 | 601 | ||
| 599 | filename = getname(path); | 602 | filename = getname(path); |
| 600 | error = PTR_ERR(filename); | 603 | error = PTR_ERR(filename); |
| 601 | if (IS_ERR(filename)) | 604 | if (IS_ERR(filename)) |
| 602 | goto out; | 605 | goto out; |
| 603 | error = do_execve(filename, argv, envp, regs); | 606 | error = do_execve(filename->name, argv, envp, regs); |
| 604 | putname(filename); | 607 | putname(filename); |
| 605 | if (error == 0) | 608 | if (error == 0) |
| 606 | single_step_execve(); | 609 | single_step_execve(); |
| @@ -615,13 +618,13 @@ long compat_sys_execve(const char __user *path, | |||
| 615 | struct pt_regs *regs) | 618 | struct pt_regs *regs) |
| 616 | { | 619 | { |
| 617 | long error; | 620 | long error; |
| 618 | char *filename; | 621 | struct filename *filename; |
| 619 | 622 | ||
| 620 | filename = getname(path); | 623 | filename = getname(path); |
| 621 | error = PTR_ERR(filename); | 624 | error = PTR_ERR(filename); |
| 622 | if (IS_ERR(filename)) | 625 | if (IS_ERR(filename)) |
| 623 | goto out; | 626 | goto out; |
| 624 | error = compat_do_execve(filename, argv, envp, regs); | 627 | error = compat_do_execve(filename->name, argv, envp, regs); |
| 625 | putname(filename); | 628 | putname(filename); |
| 626 | if (error == 0) | 629 | if (error == 0) |
| 627 | single_step_execve(); | 630 | single_step_execve(); |
