You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'v2.6.36'
This commit is contained in:
+1
-1
@@ -3162,7 +3162,7 @@ F: drivers/net/ioc3-eth.c
|
||||
|
||||
IOC3 SERIAL DRIVER
|
||||
M: Pat Gefre <pfg@sgi.com>
|
||||
L: linux-mips@linux-mips.org
|
||||
L: linux-serial@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/serial/ioc3_serial.c
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 36
|
||||
EXTRAVERSION = -rc8
|
||||
EXTRAVERSION =
|
||||
NAME = Flesh-Eating Bats with Fangs
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
||||
@@ -82,9 +82,9 @@ typedef elf_fpreg_t elf_fpregset_t;
|
||||
* These are used to set parameters in the core dumps.
|
||||
*/
|
||||
#define ELF_CLASS ELFCLASS32
|
||||
#if defined(__LITTLE_ENDIAN)
|
||||
#if defined(__LITTLE_ENDIAN__)
|
||||
#define ELF_DATA ELFDATA2LSB
|
||||
#elif defined(__BIG_ENDIAN)
|
||||
#elif defined(__BIG_ENDIAN__)
|
||||
#define ELF_DATA ELFDATA2MSB
|
||||
#else
|
||||
#error no endian defined
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
vmlinux.lds
|
||||
@@ -28,6 +28,8 @@
|
||||
|
||||
#define DEBUG_SIG 0
|
||||
|
||||
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
|
||||
|
||||
asmlinkage int
|
||||
sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
|
||||
unsigned long r2, unsigned long r3, unsigned long r4,
|
||||
@@ -254,7 +256,7 @@ give_sigsegv:
|
||||
static int prev_insn(struct pt_regs *regs)
|
||||
{
|
||||
u16 inst;
|
||||
if (get_user(&inst, (u16 __user *)(regs->bpc - 2)))
|
||||
if (get_user(inst, (u16 __user *)(regs->bpc - 2)))
|
||||
return -EFAULT;
|
||||
if ((inst & 0xfff0) == 0x10f0) /* trap ? */
|
||||
regs->bpc -= 2;
|
||||
|
||||
@@ -7,6 +7,10 @@ subdir-ccflags-y := -Werror
|
||||
include arch/mips/Kbuild.platforms
|
||||
obj-y := $(platform-y)
|
||||
|
||||
# make clean traverses $(obj-) without having included .config, so
|
||||
# everything ends up here
|
||||
obj- := $(platform-)
|
||||
|
||||
# mips object files
|
||||
# The object files are linked as core-y files would be linked
|
||||
|
||||
|
||||
@@ -881,11 +881,15 @@ config NO_IOPORT
|
||||
config GENERIC_ISA_DMA
|
||||
bool
|
||||
select ZONE_DMA if GENERIC_ISA_DMA_SUPPORT_BROKEN=n
|
||||
select ISA_DMA_API
|
||||
|
||||
config GENERIC_ISA_DMA_SUPPORT_BROKEN
|
||||
bool
|
||||
select GENERIC_ISA_DMA
|
||||
|
||||
config ISA_DMA_API
|
||||
bool
|
||||
|
||||
config GENERIC_GPIO
|
||||
bool
|
||||
|
||||
|
||||
@@ -105,4 +105,4 @@ OBJCOPYFLAGS_vmlinuz.srec := $(OBJCOPYFLAGS) -S -O srec
|
||||
vmlinuz.srec: vmlinuz
|
||||
$(call cmd,objcopy)
|
||||
|
||||
clean-files := $(objtree)/vmlinuz.*
|
||||
clean-files := $(objtree)/vmlinuz $(objtree)/vmlinuz.{32,ecoff,bin,srec}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# DECstation family
|
||||
#
|
||||
platform-$(CONFIG_MACH_DECSTATION) = dec/
|
||||
platform-$(CONFIG_MACH_DECSTATION) += dec/
|
||||
cflags-$(CONFIG_MACH_DECSTATION) += \
|
||||
-I$(srctree)/arch/mips/include/asm/mach-dec
|
||||
libs-$(CONFIG_MACH_DECSTATION) += arch/mips/dec/prom/
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_32BIT
|
||||
#include <linux/types.h>
|
||||
|
||||
struct flock {
|
||||
short l_type;
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
core-$(CONFIG_MACH_JZ4740) += arch/mips/jz4740/
|
||||
platform-$(CONFIG_MACH_JZ4740) += jz4740/
|
||||
cflags-$(CONFIG_MACH_JZ4740) += -I$(srctree)/arch/mips/include/asm/mach-jz4740
|
||||
load-$(CONFIG_MACH_JZ4740) += 0xffffffff80010000
|
||||
|
||||
@@ -40,7 +40,6 @@ int __compute_return_epc(struct pt_regs *regs)
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
regs->regs[0] = 0;
|
||||
switch (insn.i_format.opcode) {
|
||||
/*
|
||||
* jr and jalr are in r_format format.
|
||||
|
||||
@@ -536,7 +536,7 @@ asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit)
|
||||
{
|
||||
/* do the secure computing check first */
|
||||
if (!entryexit)
|
||||
secure_computing(regs->regs[0]);
|
||||
secure_computing(regs->regs[2]);
|
||||
|
||||
if (unlikely(current->audit_context) && entryexit)
|
||||
audit_syscall_exit(AUDITSC_RESULT(regs->regs[2]),
|
||||
@@ -565,7 +565,7 @@ asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit)
|
||||
|
||||
out:
|
||||
if (unlikely(current->audit_context) && !entryexit)
|
||||
audit_syscall_entry(audit_arch(), regs->regs[0],
|
||||
audit_syscall_entry(audit_arch(), regs->regs[2],
|
||||
regs->regs[4], regs->regs[5],
|
||||
regs->regs[6], regs->regs[7]);
|
||||
}
|
||||
|
||||
@@ -63,9 +63,9 @@ stack_done:
|
||||
sw t0, PT_R7(sp) # set error flag
|
||||
beqz t0, 1f
|
||||
|
||||
lw t1, PT_R2(sp) # syscall number
|
||||
negu v0 # error
|
||||
sw v0, PT_R0(sp) # set flag for syscall
|
||||
# restarting
|
||||
sw t1, PT_R0(sp) # save it for syscall restarting
|
||||
1: sw v0, PT_R2(sp) # result
|
||||
|
||||
o32_syscall_exit:
|
||||
@@ -104,9 +104,9 @@ syscall_trace_entry:
|
||||
sw t0, PT_R7(sp) # set error flag
|
||||
beqz t0, 1f
|
||||
|
||||
lw t1, PT_R2(sp) # syscall number
|
||||
negu v0 # error
|
||||
sw v0, PT_R0(sp) # set flag for syscall
|
||||
# restarting
|
||||
sw t1, PT_R0(sp) # save it for syscall restarting
|
||||
1: sw v0, PT_R2(sp) # result
|
||||
|
||||
j syscall_exit
|
||||
@@ -169,8 +169,7 @@ stackargs:
|
||||
* We probably should handle this case a bit more drastic.
|
||||
*/
|
||||
bad_stack:
|
||||
negu v0 # error
|
||||
sw v0, PT_R0(sp)
|
||||
li v0, EFAULT
|
||||
sw v0, PT_R2(sp)
|
||||
li t0, 1 # set error flag
|
||||
sw t0, PT_R7(sp)
|
||||
|
||||
@@ -66,9 +66,9 @@ NESTED(handle_sys64, PT_SIZE, sp)
|
||||
sd t0, PT_R7(sp) # set error flag
|
||||
beqz t0, 1f
|
||||
|
||||
ld t1, PT_R2(sp) # syscall number
|
||||
dnegu v0 # error
|
||||
sd v0, PT_R0(sp) # set flag for syscall
|
||||
# restarting
|
||||
sd t1, PT_R0(sp) # save it for syscall restarting
|
||||
1: sd v0, PT_R2(sp) # result
|
||||
|
||||
n64_syscall_exit:
|
||||
@@ -109,8 +109,9 @@ syscall_trace_entry:
|
||||
sd t0, PT_R7(sp) # set error flag
|
||||
beqz t0, 1f
|
||||
|
||||
ld t1, PT_R2(sp) # syscall number
|
||||
dnegu v0 # error
|
||||
sd v0, PT_R0(sp) # set flag for syscall restarting
|
||||
sd t1, PT_R0(sp) # save it for syscall restarting
|
||||
1: sd v0, PT_R2(sp) # result
|
||||
|
||||
j syscall_exit
|
||||
|
||||
@@ -65,8 +65,9 @@ NESTED(handle_sysn32, PT_SIZE, sp)
|
||||
sd t0, PT_R7(sp) # set error flag
|
||||
beqz t0, 1f
|
||||
|
||||
ld t1, PT_R2(sp) # syscall number
|
||||
dnegu v0 # error
|
||||
sd v0, PT_R0(sp) # set flag for syscall restarting
|
||||
sd t1, PT_R0(sp) # save it for syscall restarting
|
||||
1: sd v0, PT_R2(sp) # result
|
||||
|
||||
local_irq_disable # make sure need_resched and
|
||||
@@ -106,8 +107,9 @@ n32_syscall_trace_entry:
|
||||
sd t0, PT_R7(sp) # set error flag
|
||||
beqz t0, 1f
|
||||
|
||||
ld t1, PT_R2(sp) # syscall number
|
||||
dnegu v0 # error
|
||||
sd v0, PT_R0(sp) # set flag for syscall restarting
|
||||
sd t1, PT_R0(sp) # save it for syscall restarting
|
||||
1: sd v0, PT_R2(sp) # result
|
||||
|
||||
j syscall_exit
|
||||
@@ -320,10 +322,10 @@ EXPORT(sysn32_call_table)
|
||||
PTR sys_cacheflush
|
||||
PTR sys_cachectl
|
||||
PTR sys_sysmips
|
||||
PTR sys_io_setup /* 6200 */
|
||||
PTR compat_sys_io_setup /* 6200 */
|
||||
PTR sys_io_destroy
|
||||
PTR sys_io_getevents
|
||||
PTR sys_io_submit
|
||||
PTR compat_sys_io_getevents
|
||||
PTR compat_sys_io_submit
|
||||
PTR sys_io_cancel
|
||||
PTR sys_exit_group /* 6205 */
|
||||
PTR sys_lookup_dcookie
|
||||
|
||||
@@ -93,8 +93,9 @@ NESTED(handle_sys, PT_SIZE, sp)
|
||||
sd t0, PT_R7(sp) # set error flag
|
||||
beqz t0, 1f
|
||||
|
||||
ld t1, PT_R2(sp) # syscall number
|
||||
dnegu v0 # error
|
||||
sd v0, PT_R0(sp) # flag for syscall restarting
|
||||
sd t1, PT_R0(sp) # save it for syscall restarting
|
||||
1: sd v0, PT_R2(sp) # result
|
||||
|
||||
o32_syscall_exit:
|
||||
@@ -142,8 +143,9 @@ trace_a_syscall:
|
||||
sd t0, PT_R7(sp) # set error flag
|
||||
beqz t0, 1f
|
||||
|
||||
ld t1, PT_R2(sp) # syscall number
|
||||
dnegu v0 # error
|
||||
sd v0, PT_R0(sp) # set flag for syscall restarting
|
||||
sd t1, PT_R0(sp) # save it for syscall restarting
|
||||
1: sd v0, PT_R2(sp) # result
|
||||
|
||||
j syscall_exit
|
||||
@@ -154,8 +156,7 @@ trace_a_syscall:
|
||||
* The stackpointer for a call with more than 4 arguments is bad.
|
||||
*/
|
||||
bad_stack:
|
||||
dnegu v0 # error
|
||||
sd v0, PT_R0(sp)
|
||||
li v0, EFAULT
|
||||
sd v0, PT_R2(sp)
|
||||
li t0, 1 # set error flag
|
||||
sd t0, PT_R7(sp)
|
||||
@@ -444,10 +445,10 @@ sys_call_table:
|
||||
PTR compat_sys_futex
|
||||
PTR compat_sys_sched_setaffinity
|
||||
PTR compat_sys_sched_getaffinity /* 4240 */
|
||||
PTR sys_io_setup
|
||||
PTR compat_sys_io_setup
|
||||
PTR sys_io_destroy
|
||||
PTR sys_io_getevents
|
||||
PTR sys_io_submit
|
||||
PTR compat_sys_io_getevents
|
||||
PTR compat_sys_io_submit
|
||||
PTR sys_io_cancel /* 4245 */
|
||||
PTR sys_exit_group
|
||||
PTR sys32_lookup_dcookie
|
||||
|
||||
+22
-23
@@ -390,7 +390,6 @@ asmlinkage void sys_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
|
||||
{
|
||||
struct rt_sigframe __user *frame;
|
||||
sigset_t set;
|
||||
stack_t st;
|
||||
int sig;
|
||||
|
||||
frame = (struct rt_sigframe __user *) regs.regs[29];
|
||||
@@ -411,11 +410,9 @@ asmlinkage void sys_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
|
||||
else if (sig)
|
||||
force_sig(sig, current);
|
||||
|
||||
if (__copy_from_user(&st, &frame->rs_uc.uc_stack, sizeof(st)))
|
||||
goto badframe;
|
||||
/* It is more difficult to avoid calling this function than to
|
||||
call it and ignore errors. */
|
||||
do_sigaltstack((stack_t __user *)&st, NULL, regs.regs[29]);
|
||||
do_sigaltstack(&frame->rs_uc.uc_stack, NULL, regs.regs[29]);
|
||||
|
||||
/*
|
||||
* Don't let your children do this ...
|
||||
@@ -550,23 +547,26 @@ static int handle_signal(unsigned long sig, siginfo_t *info,
|
||||
struct mips_abi *abi = current->thread.abi;
|
||||
void *vdso = current->mm->context.vdso;
|
||||
|
||||
switch(regs->regs[0]) {
|
||||
case ERESTART_RESTARTBLOCK:
|
||||
case ERESTARTNOHAND:
|
||||
regs->regs[2] = EINTR;
|
||||
break;
|
||||
case ERESTARTSYS:
|
||||
if (!(ka->sa.sa_flags & SA_RESTART)) {
|
||||
if (regs->regs[0]) {
|
||||
switch(regs->regs[2]) {
|
||||
case ERESTART_RESTARTBLOCK:
|
||||
case ERESTARTNOHAND:
|
||||
regs->regs[2] = EINTR;
|
||||
break;
|
||||
case ERESTARTSYS:
|
||||
if (!(ka->sa.sa_flags & SA_RESTART)) {
|
||||
regs->regs[2] = EINTR;
|
||||
break;
|
||||
}
|
||||
/* fallthrough */
|
||||
case ERESTARTNOINTR:
|
||||
regs->regs[7] = regs->regs[26];
|
||||
regs->regs[2] = regs->regs[0];
|
||||
regs->cp0_epc -= 4;
|
||||
}
|
||||
/* fallthrough */
|
||||
case ERESTARTNOINTR: /* Userland will reload $v0. */
|
||||
regs->regs[7] = regs->regs[26];
|
||||
regs->cp0_epc -= 8;
|
||||
}
|
||||
|
||||
regs->regs[0] = 0; /* Don't deal with this again. */
|
||||
regs->regs[0] = 0; /* Don't deal with this again. */
|
||||
}
|
||||
|
||||
if (sig_uses_siginfo(ka))
|
||||
ret = abi->setup_rt_frame(vdso + abi->rt_signal_return_offset,
|
||||
@@ -575,6 +575,9 @@ static int handle_signal(unsigned long sig, siginfo_t *info,
|
||||
ret = abi->setup_frame(vdso + abi->signal_return_offset,
|
||||
ka, regs, sig, oldset);
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
spin_lock_irq(¤t->sighand->siglock);
|
||||
sigorsets(¤t->blocked, ¤t->blocked, &ka->sa.sa_mask);
|
||||
if (!(ka->sa.sa_flags & SA_NODEFER))
|
||||
@@ -622,17 +625,13 @@ static void do_signal(struct pt_regs *regs)
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Who's code doesn't conform to the restartable syscall convention
|
||||
* dies here!!! The li instruction, a single machine instruction,
|
||||
* must directly be followed by the syscall instruction.
|
||||
*/
|
||||
if (regs->regs[0]) {
|
||||
if (regs->regs[2] == ERESTARTNOHAND ||
|
||||
regs->regs[2] == ERESTARTSYS ||
|
||||
regs->regs[2] == ERESTARTNOINTR) {
|
||||
regs->regs[2] = regs->regs[0];
|
||||
regs->regs[7] = regs->regs[26];
|
||||
regs->cp0_epc -= 8;
|
||||
regs->cp0_epc -= 4;
|
||||
}
|
||||
if (regs->regs[2] == ERESTART_RESTARTBLOCK) {
|
||||
regs->regs[2] = current->thread.abi->restart;
|
||||
|
||||
@@ -109,6 +109,7 @@ asmlinkage int sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
|
||||
asmlinkage void sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
|
||||
{
|
||||
struct rt_sigframe_n32 __user *frame;
|
||||
mm_segment_t old_fs;
|
||||
sigset_t set;
|
||||
stack_t st;
|
||||
s32 sp;
|
||||
@@ -143,7 +144,11 @@ asmlinkage void sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
|
||||
|
||||
/* It is more difficult to avoid calling this function than to
|
||||
call it and ignore errors. */
|
||||
old_fs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
do_sigaltstack((stack_t __user *)&st, NULL, regs.regs[29]);
|
||||
set_fs(old_fs);
|
||||
|
||||
|
||||
/*
|
||||
* Don't let your children do this ...
|
||||
|
||||
@@ -109,8 +109,6 @@ static void emulate_load_store_insn(struct pt_regs *regs,
|
||||
unsigned long value;
|
||||
unsigned int res;
|
||||
|
||||
regs->regs[0] = 0;
|
||||
|
||||
/*
|
||||
* This load never faults.
|
||||
*/
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user