Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus

* 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus:
MIPS: Enable ISA_DMA_API config to fix build failure
MIPS: 32-bit: Fix build failure in asm/fcntl.h
MIPS: Remove all generated vmlinuz* files on "make clean"
MIPS: do_sigaltstack() expects userland pointers
MIPS: Fix error values in case of bad_stack
MIPS: Sanitize restart logics
MIPS: secure_computing, syscall audit: syscall number should in r2, not r0.
MIPS: Don't block signals if we'd failed to setup a sigframe

+53 -44
+4
arch/mips/Kconfig
··· 881 881 config GENERIC_ISA_DMA 882 882 bool 883 883 select ZONE_DMA if GENERIC_ISA_DMA_SUPPORT_BROKEN=n 884 + select ISA_DMA_API 884 885 885 886 config GENERIC_ISA_DMA_SUPPORT_BROKEN 886 887 bool 887 888 select GENERIC_ISA_DMA 889 + 890 + config ISA_DMA_API 891 + bool 888 892 889 893 config GENERIC_GPIO 890 894 bool
+1 -1
arch/mips/boot/compressed/Makefile
··· 105 105 vmlinuz.srec: vmlinuz 106 106 $(call cmd,objcopy) 107 107 108 - clean-files := $(objtree)/vmlinuz.* 108 + clean-files := $(objtree)/vmlinuz $(objtree)/vmlinuz.{32,ecoff,bin,srec}
+1
arch/mips/include/asm/fcntl.h
··· 56 56 */ 57 57 58 58 #ifdef CONFIG_32BIT 59 + #include <linux/types.h> 59 60 60 61 struct flock { 61 62 short l_type;
-1
arch/mips/kernel/branch.c
··· 40 40 return -EFAULT; 41 41 } 42 42 43 - regs->regs[0] = 0; 44 43 switch (insn.i_format.opcode) { 45 44 /* 46 45 * jr and jalr are in r_format format.
+2 -2
arch/mips/kernel/ptrace.c
··· 536 536 { 537 537 /* do the secure computing check first */ 538 538 if (!entryexit) 539 - secure_computing(regs->regs[0]); 539 + secure_computing(regs->regs[2]); 540 540 541 541 if (unlikely(current->audit_context) && entryexit) 542 542 audit_syscall_exit(AUDITSC_RESULT(regs->regs[2]), ··· 565 565 566 566 out: 567 567 if (unlikely(current->audit_context) && !entryexit) 568 - audit_syscall_entry(audit_arch(), regs->regs[0], 568 + audit_syscall_entry(audit_arch(), regs->regs[2], 569 569 regs->regs[4], regs->regs[5], 570 570 regs->regs[6], regs->regs[7]); 571 571 }
+5 -6
arch/mips/kernel/scall32-o32.S
··· 63 63 sw t0, PT_R7(sp) # set error flag 64 64 beqz t0, 1f 65 65 66 + lw t1, PT_R2(sp) # syscall number 66 67 negu v0 # error 67 - sw v0, PT_R0(sp) # set flag for syscall 68 - # restarting 68 + sw t1, PT_R0(sp) # save it for syscall restarting 69 69 1: sw v0, PT_R2(sp) # result 70 70 71 71 o32_syscall_exit: ··· 104 104 sw t0, PT_R7(sp) # set error flag 105 105 beqz t0, 1f 106 106 107 + lw t1, PT_R2(sp) # syscall number 107 108 negu v0 # error 108 - sw v0, PT_R0(sp) # set flag for syscall 109 - # restarting 109 + sw t1, PT_R0(sp) # save it for syscall restarting 110 110 1: sw v0, PT_R2(sp) # result 111 111 112 112 j syscall_exit ··· 169 169 * We probably should handle this case a bit more drastic. 170 170 */ 171 171 bad_stack: 172 - negu v0 # error 173 - sw v0, PT_R0(sp) 172 + li v0, EFAULT 174 173 sw v0, PT_R2(sp) 175 174 li t0, 1 # set error flag 176 175 sw t0, PT_R7(sp)
+4 -3
arch/mips/kernel/scall64-64.S
··· 66 66 sd t0, PT_R7(sp) # set error flag 67 67 beqz t0, 1f 68 68 69 + ld t1, PT_R2(sp) # syscall number 69 70 dnegu v0 # error 70 - sd v0, PT_R0(sp) # set flag for syscall 71 - # restarting 71 + sd t1, PT_R0(sp) # save it for syscall restarting 72 72 1: sd v0, PT_R2(sp) # result 73 73 74 74 n64_syscall_exit: ··· 109 109 sd t0, PT_R7(sp) # set error flag 110 110 beqz t0, 1f 111 111 112 + ld t1, PT_R2(sp) # syscall number 112 113 dnegu v0 # error 113 - sd v0, PT_R0(sp) # set flag for syscall restarting 114 + sd t1, PT_R0(sp) # save it for syscall restarting 114 115 1: sd v0, PT_R2(sp) # result 115 116 116 117 j syscall_exit
+4 -2
arch/mips/kernel/scall64-n32.S
··· 65 65 sd t0, PT_R7(sp) # set error flag 66 66 beqz t0, 1f 67 67 68 + ld t1, PT_R2(sp) # syscall number 68 69 dnegu v0 # error 69 - sd v0, PT_R0(sp) # set flag for syscall restarting 70 + sd t1, PT_R0(sp) # save it for syscall restarting 70 71 1: sd v0, PT_R2(sp) # result 71 72 72 73 local_irq_disable # make sure need_resched and ··· 107 106 sd t0, PT_R7(sp) # set error flag 108 107 beqz t0, 1f 109 108 109 + ld t1, PT_R2(sp) # syscall number 110 110 dnegu v0 # error 111 - sd v0, PT_R0(sp) # set flag for syscall restarting 111 + sd t1, PT_R0(sp) # save it for syscall restarting 112 112 1: sd v0, PT_R2(sp) # result 113 113 114 114 j syscall_exit
+5 -4
arch/mips/kernel/scall64-o32.S
··· 93 93 sd t0, PT_R7(sp) # set error flag 94 94 beqz t0, 1f 95 95 96 + ld t1, PT_R2(sp) # syscall number 96 97 dnegu v0 # error 97 - sd v0, PT_R0(sp) # flag for syscall restarting 98 + sd t1, PT_R0(sp) # save it for syscall restarting 98 99 1: sd v0, PT_R2(sp) # result 99 100 100 101 o32_syscall_exit: ··· 143 142 sd t0, PT_R7(sp) # set error flag 144 143 beqz t0, 1f 145 144 145 + ld t1, PT_R2(sp) # syscall number 146 146 dnegu v0 # error 147 - sd v0, PT_R0(sp) # set flag for syscall restarting 147 + sd t1, PT_R0(sp) # save it for syscall restarting 148 148 1: sd v0, PT_R2(sp) # result 149 149 150 150 j syscall_exit ··· 156 154 * The stackpointer for a call with more than 4 arguments is bad. 157 155 */ 158 156 bad_stack: 159 - dnegu v0 # error 160 - sd v0, PT_R0(sp) 157 + li v0, EFAULT 161 158 sd v0, PT_R2(sp) 162 159 li t0, 1 # set error flag 163 160 sd t0, PT_R7(sp)
+22 -23
arch/mips/kernel/signal.c
··· 390 390 { 391 391 struct rt_sigframe __user *frame; 392 392 sigset_t set; 393 - stack_t st; 394 393 int sig; 395 394 396 395 frame = (struct rt_sigframe __user *) regs.regs[29]; ··· 410 411 else if (sig) 411 412 force_sig(sig, current); 412 413 413 - if (__copy_from_user(&st, &frame->rs_uc.uc_stack, sizeof(st))) 414 - goto badframe; 415 414 /* It is more difficult to avoid calling this function than to 416 415 call it and ignore errors. */ 417 - do_sigaltstack((stack_t __user *)&st, NULL, regs.regs[29]); 416 + do_sigaltstack(&frame->rs_uc.uc_stack, NULL, regs.regs[29]); 418 417 419 418 /* 420 419 * Don't let your children do this ... ··· 547 550 struct mips_abi *abi = current->thread.abi; 548 551 void *vdso = current->mm->context.vdso; 549 552 550 - switch(regs->regs[0]) { 551 - case ERESTART_RESTARTBLOCK: 552 - case ERESTARTNOHAND: 553 - regs->regs[2] = EINTR; 554 - break; 555 - case ERESTARTSYS: 556 - if (!(ka->sa.sa_flags & SA_RESTART)) { 553 + if (regs->regs[0]) { 554 + switch(regs->regs[2]) { 555 + case ERESTART_RESTARTBLOCK: 556 + case ERESTARTNOHAND: 557 557 regs->regs[2] = EINTR; 558 558 break; 559 + case ERESTARTSYS: 560 + if (!(ka->sa.sa_flags & SA_RESTART)) { 561 + regs->regs[2] = EINTR; 562 + break; 563 + } 564 + /* fallthrough */ 565 + case ERESTARTNOINTR: 566 + regs->regs[7] = regs->regs[26]; 567 + regs->regs[2] = regs->regs[0]; 568 + regs->cp0_epc -= 4; 559 569 } 560 - /* fallthrough */ 561 - case ERESTARTNOINTR: /* Userland will reload $v0. */ 562 - regs->regs[7] = regs->regs[26]; 563 - regs->cp0_epc -= 8; 564 - } 565 570 566 - regs->regs[0] = 0; /* Don't deal with this again. */ 571 + regs->regs[0] = 0; /* Don't deal with this again. */ 572 + } 567 573 568 574 if (sig_uses_siginfo(ka)) 569 575 ret = abi->setup_rt_frame(vdso + abi->rt_signal_return_offset, ··· 574 574 else 575 575 ret = abi->setup_frame(vdso + abi->signal_return_offset, 576 576 ka, regs, sig, oldset); 577 + 578 + if (ret) 579 + return ret; 577 580 578 581 spin_lock_irq(&current->sighand->siglock); 579 582 sigorsets(&current->blocked, &current->blocked, &ka->sa.sa_mask); ··· 625 622 return; 626 623 } 627 624 628 - /* 629 - * Who's code doesn't conform to the restartable syscall convention 630 - * dies here!!! The li instruction, a single machine instruction, 631 - * must directly be followed by the syscall instruction. 632 - */ 633 625 if (regs->regs[0]) { 634 626 if (regs->regs[2] == ERESTARTNOHAND || 635 627 regs->regs[2] == ERESTARTSYS || 636 628 regs->regs[2] == ERESTARTNOINTR) { 629 + regs->regs[2] = regs->regs[0]; 637 630 regs->regs[7] = regs->regs[26]; 638 - regs->cp0_epc -= 8; 631 + regs->cp0_epc -= 4; 639 632 } 640 633 if (regs->regs[2] == ERESTART_RESTARTBLOCK) { 641 634 regs->regs[2] = current->thread.abi->restart;
+5
arch/mips/kernel/signal_n32.c
··· 109 109 asmlinkage void sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) 110 110 { 111 111 struct rt_sigframe_n32 __user *frame; 112 + mm_segment_t old_fs; 112 113 sigset_t set; 113 114 stack_t st; 114 115 s32 sp; ··· 144 143 145 144 /* It is more difficult to avoid calling this function than to 146 145 call it and ignore errors. */ 146 + old_fs = get_fs(); 147 + set_fs(KERNEL_DS); 147 148 do_sigaltstack((stack_t __user *)&st, NULL, regs.regs[29]); 149 + set_fs(old_fs); 150 + 148 151 149 152 /* 150 153 * Don't let your children do this ...
-2
arch/mips/kernel/unaligned.c
··· 109 109 unsigned long value; 110 110 unsigned int res; 111 111 112 - regs->regs[0] = 0; 113 - 114 112 /* 115 113 * This load never faults. 116 114 */