You can subscribe to this list here.
2003 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2006 |
Jan
(18) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Fred W. <fw...@us...> - 2006-01-24 04:40:43
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/arch/x86_64/kernel In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/arch/x86_64/kernel Modified Files: sys_x86_64.c Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: sys_x86_64.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/arch/x86_64/kernel/sys_x86_64.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** sys_x86_64.c 24 Jan 2006 00:28:19 -0000 1.3 --- sys_x86_64.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 69,79 **** unsigned long *end) { ! #ifdef CONFIG_IA32_EMULATION ! if (test_thread_flag(TIF_IA32)) { ! *begin = TASK_UNMAPPED_32; ! *end = IA32_PAGE_OFFSET; ! } else ! #endif ! if (flags & MAP_32BIT) { /* This is usually used needed to map code in small model, so it needs to be in the first 31bit. Limit --- 69,73 ---- unsigned long *end) { ! if (!test_thread_flag(TIF_IA32) && (flags & MAP_32BIT)) { /* This is usually used needed to map code in small model, so it needs to be in the first 31bit. Limit *************** *** 85,92 **** *begin = 0x40000000; *end = 0x80000000; ! } else { ! *begin = TASK_UNMAPPED_64; *end = TASK_SIZE; ! } } --- 79,86 ---- *begin = 0x40000000; *end = 0x80000000; ! } else { ! *begin = TASK_UNMAPPED_BASE; *end = TASK_SIZE; ! } } *************** *** 112,115 **** --- 106,114 ---- return addr; } + if (((flags & MAP_32BIT) || test_thread_flag(TIF_IA32)) + && len <= mm->cached_hole_size) { + mm->cached_hole_size = 0; + mm->free_area_cache = begin; + } addr = mm->free_area_cache; if (addr < begin) *************** *** 127,130 **** --- 126,130 ---- if (start_addr != begin) { start_addr = addr = begin; + mm->cached_hole_size = 0; goto full_search; } *************** *** 138,141 **** --- 138,144 ---- return addr; } + if (addr + mm->cached_hole_size < vma->vm_start) + mm->cached_hole_size = vma->vm_start - addr; + addr = vma->vm_end; } |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:43
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/arch/i386/kernel In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/arch/i386/kernel Modified Files: Makefile entry.S i386_ksyms.c traps.c Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: Makefile =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/arch/i386/kernel/Makefile,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** Makefile 24 Jan 2006 00:28:19 -0000 1.3 --- Makefile 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 8,16 **** ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_i386.o \ pci-dma.o i386_ksyms.o i387.o dmi_scan.o bootflag.o \ ! doublefault.o quirks.o obj-y += cpu/ obj-y += timers/ ! obj-$(CONFIG_ACPI_BOOT) += acpi/ obj-$(CONFIG_X86_BIOS_REBOOT) += reboot.o obj-$(CONFIG_MCA) += mca.o --- 8,16 ---- ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_i386.o \ pci-dma.o i386_ksyms.o i387.o dmi_scan.o bootflag.o \ ! doublefault.o quirks.o i8237.o obj-y += cpu/ obj-y += timers/ ! obj-$(CONFIG_ACPI) += acpi/ obj-$(CONFIG_X86_BIOS_REBOOT) += reboot.o obj-$(CONFIG_MCA) += mca.o *************** *** 25,28 **** --- 25,29 ---- obj-$(CONFIG_X86_IO_APIC) += io_apic.o obj-$(CONFIG_X86_REBOOTFIXUPS) += reboot_fixups.o + obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o crash.o obj-$(CONFIG_X86_NUMAQ) += numaq.o obj-$(CONFIG_X86_SUMMIT_NUMA) += summit.o Index: entry.S =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/arch/i386/kernel/entry.S,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** entry.S 24 Jan 2006 00:28:19 -0000 1.2 --- entry.S 24 Jan 2006 04:40:17 -0000 1.3 *************** *** 237,241 **** /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ ! testw $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP),TI_flags(%ebp) jnz syscall_trace_entry cmpl $(nr_syscalls), %eax --- 237,241 ---- /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ ! testw $(_TIF_SYSCALL_EMU|_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT),TI_flags(%ebp) jnz syscall_trace_entry cmpl $(nr_syscalls), %eax *************** *** 260,266 **** SAVE_ALL GET_THREAD_INFO(%ebp) ! # system call tracing in operation /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ ! testw $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP),TI_flags(%ebp) jnz syscall_trace_entry cmpl $(nr_syscalls), %eax --- 260,266 ---- SAVE_ALL GET_THREAD_INFO(%ebp) ! # system call tracing in operation / emulation /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ ! testw $(_TIF_SYSCALL_EMU|_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT),TI_flags(%ebp) jnz syscall_trace_entry cmpl $(nr_syscalls), %eax *************** *** 353,357 **** xorl %edx, %edx call do_notify_resume ! jmp restore_all ALIGN --- 353,357 ---- xorl %edx, %edx call do_notify_resume ! jmp resume_userspace ALIGN *************** *** 363,367 **** xorl %edx, %edx call do_notify_resume ! jmp restore_all # perform syscall exit tracing --- 363,367 ---- xorl %edx, %edx call do_notify_resume ! jmp resume_userspace # perform syscall exit tracing *************** *** 372,375 **** --- 372,378 ---- xorl %edx,%edx call do_syscall_trace + cmpl $0, %eax + jne resume_userspace # ret != 0 -> running under PTRACE_SYSEMU, + # so must skip actual syscall movl ORIG_EAX(%esp), %eax cmpl $(nr_syscalls), %eax *************** *** 538,542 **** pushl $sysenter_past_esp ! ENTRY(debug) cmpl $sysenter_entry,(%esp) jne debug_stack_correct --- 541,545 ---- pushl $sysenter_past_esp ! KPROBE_ENTRY(debug) cmpl $sysenter_entry,(%esp) jne debug_stack_correct *************** *** 549,553 **** call do_debug jmp ret_from_exception ! /* * NMI is doubly nasty. It can happen _while_ we're handling --- 552,556 ---- call do_debug jmp ret_from_exception ! .previous .text /* * NMI is doubly nasty. It can happen _while_ we're handling *************** *** 622,626 **** .previous ! ENTRY(int3) pushl $-1 # mark this as an int SAVE_ALL --- 625,629 ---- .previous ! KPROBE_ENTRY(int3) pushl $-1 # mark this as an int SAVE_ALL *************** *** 629,632 **** --- 632,636 ---- call do_int3 jmp ret_from_exception + .previous .text ENTRY(overflow) *************** *** 662,668 **** jmp error_code ! ENTRY(general_protection) pushl $do_general_protection jmp error_code ENTRY(alignment_check) --- 666,673 ---- jmp error_code ! KPROBE_ENTRY(general_protection) pushl $do_general_protection jmp error_code + .previous .text ENTRY(alignment_check) *************** *** 670,676 **** jmp error_code ! ENTRY(page_fault) pushl $do_page_fault jmp error_code #ifdef CONFIG_X86_MCE --- 675,682 ---- jmp error_code ! KPROBE_ENTRY(page_fault) pushl $do_page_fault jmp error_code + .previous .text #ifdef CONFIG_X86_MCE Index: i386_ksyms.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/arch/i386/kernel/i386_ksyms.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** i386_ksyms.c 24 Jan 2006 00:28:19 -0000 1.3 --- i386_ksyms.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 1,100 **** - #include <linux/config.h> - #include <linux/module.h> - #include <linux/smp.h> - #include <linux/user.h> - #include <linux/elfcore.h> - #include <linux/mca.h> - #include <linux/sched.h> - #include <linux/in6.h> - #include <linux/interrupt.h> - #include <linux/smp_lock.h> - #include <linux/pm.h> - #include <linux/pci.h> - #include <linux/apm_bios.h> - #include <linux/kernel.h> - #include <linux/string.h> - #include <linux/tty.h> - #include <linux/highmem.h> - #include <linux/time.h> #define __KERNEL_SYSCALLS__ #include <linux/unistd.h> #include <linux/syscalls.h> ! asmlinkage int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount); ! asmlinkage int sys_ptrace(long request, long pid, long addr, long data); ! extern asmlinkage int sys_ipc(uint call, int first, int second, ! int third, void *ptr, long fifth); ! ! ! ! ! ! ! ! ! #include <asm/semaphore.h> ! #include <asm/processor.h> ! #include <asm/i387.h> ! #include <asm/uaccess.h> #include <asm/checksum.h> - #include <asm/io.h> - #include <asm/delay.h> - #include <asm/irq.h> - #include <asm/mmx.h> #include <asm/desc.h> - #include <asm/pgtable.h> - #include <asm/tlbflush.h> - #include <asm/nmi.h> - #include <asm/ist.h> - #include <asm/kdebug.h> - - extern void dump_thread(struct pt_regs *, struct user *); - extern spinlock_t rtc_lock; /* This is definitely a GPL-only symbol */ EXPORT_SYMBOL_GPL(cpu_gdt_table); - #if defined(CONFIG_APM_MODULE) - extern void machine_real_restart(unsigned char *, int); - EXPORT_SYMBOL(machine_real_restart); - extern void default_idle(void); - EXPORT_SYMBOL(default_idle); - #endif - - #ifdef CONFIG_SMP - extern void FASTCALL( __write_lock_failed(rwlock_t *rw)); - extern void FASTCALL( __read_lock_failed(rwlock_t *rw)); - #endif - - #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_HD) || defined(CONFIG_BLK_DEV_IDE_MODULE) || defined(CONFIG_BLK_DEV_HD_MODULE) - extern struct drive_info_struct drive_info; - EXPORT_SYMBOL(drive_info); - #endif - - extern unsigned long cpu_khz; - extern unsigned long get_cmos_time(void); - - /* platform dependent support */ - EXPORT_SYMBOL(boot_cpu_data); - #ifdef CONFIG_DISCONTIGMEM - EXPORT_SYMBOL(node_data); - EXPORT_SYMBOL(physnode_map); - #endif - #ifdef CONFIG_X86_NUMAQ - EXPORT_SYMBOL(xquad_portio); - #endif - EXPORT_SYMBOL(dump_thread); - EXPORT_SYMBOL(dump_fpu); - EXPORT_SYMBOL_GPL(kernel_fpu_begin); - EXPORT_SYMBOL(__ioremap); - EXPORT_SYMBOL(ioremap_nocache); - EXPORT_SYMBOL(iounmap); - EXPORT_SYMBOL(kernel_thread); - EXPORT_SYMBOL(pm_idle); - EXPORT_SYMBOL(pm_power_off); - EXPORT_SYMBOL(get_cmos_time); - EXPORT_SYMBOL(cpu_khz); - EXPORT_SYMBOL(apm_info); - EXPORT_SYMBOL(__down_failed); EXPORT_SYMBOL(__down_failed_interruptible); --- 1,14 ---- #define __KERNEL_SYSCALLS__ #include <linux/unistd.h> #include <linux/syscalls.h> ! #include <linux/config.h> ! #include <linux/module.h> #include <asm/checksum.h> #include <asm/desc.h> /* This is definitely a GPL-only symbol */ EXPORT_SYMBOL_GPL(cpu_gdt_table); EXPORT_SYMBOL(__down_failed); EXPORT_SYMBOL(__down_failed_interruptible); *************** *** 103,111 **** /* Networking helper routines. */ EXPORT_SYMBOL(csum_partial_copy_generic); - /* Delay loops */ - EXPORT_SYMBOL(__ndelay); - EXPORT_SYMBOL(__udelay); - EXPORT_SYMBOL(__delay); - EXPORT_SYMBOL(__const_udelay); EXPORT_SYMBOL(__get_user_1); --- 17,20 ---- *************** *** 121,205 **** EXPORT_SYMBOL(strstr); - EXPORT_SYMBOL(strncpy_from_user); - EXPORT_SYMBOL(__strncpy_from_user); - EXPORT_SYMBOL(clear_user); - EXPORT_SYMBOL(__clear_user); - EXPORT_SYMBOL(__copy_from_user_ll); - EXPORT_SYMBOL(__copy_to_user_ll); - EXPORT_SYMBOL(strnlen_user); - - EXPORT_SYMBOL(dma_alloc_coherent); - EXPORT_SYMBOL(dma_free_coherent); - - #ifdef CONFIG_PCI - EXPORT_SYMBOL(pci_mem_start); - #endif - - #ifdef CONFIG_PCI_BIOS - EXPORT_SYMBOL(pcibios_set_irq_routing); - EXPORT_SYMBOL(pcibios_get_irq_routing_table); - #endif - - #ifdef CONFIG_X86_USE_3DNOW - EXPORT_SYMBOL(_mmx_memcpy); - EXPORT_SYMBOL(mmx_clear_page); - EXPORT_SYMBOL(mmx_copy_page); - #endif - - #ifdef CONFIG_X86_HT - EXPORT_SYMBOL(smp_num_siblings); - EXPORT_SYMBOL(cpu_sibling_map); - #endif - #ifdef CONFIG_SMP ! EXPORT_SYMBOL(cpu_data); ! EXPORT_SYMBOL(cpu_online_map); ! EXPORT_SYMBOL(cpu_callout_map); EXPORT_SYMBOL(__write_lock_failed); EXPORT_SYMBOL(__read_lock_failed); - - /* Global SMP stuff */ - EXPORT_SYMBOL(smp_call_function); - - /* TLB flushing */ - EXPORT_SYMBOL(flush_tlb_page); - #endif - - #ifdef CONFIG_X86_IO_APIC - EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector); - #endif - - #ifdef CONFIG_MCA - EXPORT_SYMBOL(machine_id); - #endif - - #ifdef CONFIG_VT - EXPORT_SYMBOL(screen_info); - #endif - - EXPORT_SYMBOL(get_wchan); - - EXPORT_SYMBOL(rtc_lock); - - EXPORT_SYMBOL_GPL(set_nmi_callback); - EXPORT_SYMBOL_GPL(unset_nmi_callback); - - EXPORT_SYMBOL(register_die_notifier); - #ifdef CONFIG_HAVE_DEC_LOCK - EXPORT_SYMBOL(_atomic_dec_and_lock); - #endif - - EXPORT_SYMBOL(__PAGE_KERNEL); - - #ifdef CONFIG_HIGHMEM - EXPORT_SYMBOL(kmap); - EXPORT_SYMBOL(kunmap); - EXPORT_SYMBOL(kmap_atomic); - EXPORT_SYMBOL(kunmap_atomic); - EXPORT_SYMBOL(kmap_atomic_to_page); - #endif - - #if defined(CONFIG_X86_SPEEDSTEP_SMI) || defined(CONFIG_X86_SPEEDSTEP_SMI_MODULE) - EXPORT_SYMBOL(ist_info); #endif --- 30,38 ---- EXPORT_SYMBOL(strstr); #ifdef CONFIG_SMP ! extern void FASTCALL( __write_lock_failed(rwlock_t *rw)); ! extern void FASTCALL( __read_lock_failed(rwlock_t *rw)); EXPORT_SYMBOL(__write_lock_failed); EXPORT_SYMBOL(__read_lock_failed); #endif Index: traps.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/arch/i386/kernel/traps.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** traps.c 24 Jan 2006 00:28:19 -0000 1.3 --- traps.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 28,31 **** --- 28,32 ---- #include <linux/utsname.h> #include <linux/kprobes.h> + #include <linux/kexec.h> #ifdef CONFIG_EISA *************** *** 52,56 **** #include <asm/kdebug.h> - #include <linux/irq.h> #include <linux/module.h> --- 53,56 ---- *************** *** 107,110 **** --- 107,111 ---- return err; } + EXPORT_SYMBOL(register_die_notifier); static inline int valid_stack_ptr(struct thread_info *tinfo, void *p) *************** *** 211,216 **** esp = (unsigned long) (®s->esp); ! ss = __KERNEL_DS; ! if (regs->xcs & 3) { in_kernel = 0; esp = regs->esp; --- 212,217 ---- esp = (unsigned long) (®s->esp); ! savesegment(ss, ss); ! if (user_mode(regs)) { in_kernel = 0; esp = regs->esp; *************** *** 236,240 **** */ if (in_kernel) { ! u8 *eip; printk("\nStack: "); --- 237,241 ---- */ if (in_kernel) { ! u8 __user *eip; printk("\nStack: "); *************** *** 243,255 **** printk("Code: "); ! eip = (u8 *)regs->eip - 43; for (i = 0; i < 64; i++, eip++) { unsigned char c; ! if (eip < (u8 *)PAGE_OFFSET || __get_user(c, eip)) { printk(" Bad EIP value."); break; } ! if (eip == (u8 *)regs->eip) printk("<%02x> ", c); else --- 244,256 ---- printk("Code: "); ! eip = (u8 __user *)regs->eip - 43; for (i = 0; i < 64; i++, eip++) { unsigned char c; ! if (eip < (u8 __user *)PAGE_OFFSET || __get_user(c, eip)) { printk(" Bad EIP value."); break; } ! if (eip == (u8 __user *)regs->eip) printk("<%02x> ", c); else *************** *** 268,285 **** unsigned long eip; - if (regs->xcs & 3) - goto no_bug; /* Not in kernel */ - eip = regs->eip; if (eip < PAGE_OFFSET) goto no_bug; ! if (__get_user(ud2, (unsigned short *)eip)) goto no_bug; if (ud2 != 0x0b0f) goto no_bug; ! if (__get_user(line, (unsigned short *)(eip + 2))) goto bug; ! if (__get_user(file, (char **)(eip + 4)) || (unsigned long)file < PAGE_OFFSET || __get_user(c, file)) file = "<bad filename>"; --- 269,283 ---- unsigned long eip; eip = regs->eip; if (eip < PAGE_OFFSET) goto no_bug; ! if (__get_user(ud2, (unsigned short __user *)eip)) goto no_bug; if (ud2 != 0x0b0f) goto no_bug; ! if (__get_user(line, (unsigned short __user *)(eip + 2))) goto bug; ! if (__get_user(file, (char * __user *)(eip + 4)) || (unsigned long)file < PAGE_OFFSET || __get_user(c, file)) file = "<bad filename>"; *************** *** 296,299 **** --- 294,300 ---- } + /* This is gone through when something in the kernel + * has done something bad and is about to be terminated. + */ void die(const char * str, struct pt_regs * regs, long err) { *************** *** 309,313 **** static int die_counter; ! if (die.lock_owner != _smp_processor_id()) { console_verbose(); spin_lock_irq(&die.lock); --- 310,314 ---- static int die_counter; ! if (die.lock_owner != raw_smp_processor_id()) { console_verbose(); spin_lock_irq(&die.lock); *************** *** 343,346 **** --- 344,351 ---- die.lock_owner = -1; spin_unlock_irq(&die.lock); + + if (kexec_should_crash(current)) + crash_kexec(regs); + if (in_interrupt()) panic("Fatal exception in interrupt"); *************** *** 356,366 **** static inline void die_if_kernel(const char * str, struct pt_regs * regs, long err) { ! if (!(regs->eflags & VM_MASK) && !(3 & regs->xcs)) die(str, regs, err); } ! static void do_trap(int trapnr, int signr, char *str, int vm86, ! struct pt_regs * regs, long error_code, siginfo_t *info) { if (regs->eflags & VM_MASK) { if (vm86) --- 361,376 ---- static inline void die_if_kernel(const char * str, struct pt_regs * regs, long err) { ! if (!user_mode_vm(regs)) die(str, regs, err); } ! static void __kprobes do_trap(int trapnr, int signr, char *str, int vm86, ! struct pt_regs * regs, long error_code, ! siginfo_t *info) { + struct task_struct *tsk = current; + tsk->thread.error_code = error_code; + tsk->thread.trap_no = trapnr; + if (regs->eflags & VM_MASK) { if (vm86) *************** *** 369,379 **** } ! if (!(regs->xcs & 3)) goto kernel_trap; trap_signal: { - struct task_struct *tsk = current; - tsk->thread.error_code = error_code; - tsk->thread.trap_no = trapnr; if (info) force_sig_info(signr, info, tsk); --- 379,386 ---- } ! if (!user_mode(regs)) goto kernel_trap; trap_signal: { if (info) force_sig_info(signr, info, tsk); *************** *** 456,460 **** DO_ERROR_INFO(32, SIGSEGV, "iret exception", iret_error, ILL_BADSTK, 0) ! fastcall void do_general_protection(struct pt_regs * regs, long error_code) { int cpu = get_cpu(); --- 463,468 ---- DO_ERROR_INFO(32, SIGSEGV, "iret exception", iret_error, ILL_BADSTK, 0) ! fastcall void __kprobes do_general_protection(struct pt_regs * regs, ! long error_code) { int cpu = get_cpu(); *************** *** 488,495 **** put_cpu(); if (regs->eflags & VM_MASK) goto gp_in_vm86; ! if (!(regs->xcs & 3)) goto gp_in_kernel; --- 496,506 ---- put_cpu(); + current->thread.error_code = error_code; + current->thread.trap_no = 13; + if (regs->eflags & VM_MASK) goto gp_in_vm86; ! if (!user_mode(regs)) goto gp_in_kernel; *************** *** 558,561 **** --- 569,576 ---- void die_nmi (struct pt_regs *regs, const char *msg) { + if (notify_die(DIE_NMIWATCHDOG, msg, regs, 0, 0, SIGINT) == + NOTIFY_STOP) + return; + spin_lock(&nmi_print_lock); /* *************** *** 572,575 **** --- 587,599 ---- spin_unlock(&nmi_print_lock); bust_spinlocks(0); + + /* If we are in kernel we are probably nested up pretty bad + * and might aswell get out now while we still can. + */ + if (!user_mode(regs)) { + current->thread.trap_no = 2; + crash_kexec(regs); + } + do_exit(SIGSEGV); } *************** *** 627,633 **** cpu = smp_processor_id(); ++nmi_count(cpu); ! if (!nmi_callback(regs, cpu)) default_do_nmi(regs); --- 651,665 ---- cpu = smp_processor_id(); + + #ifdef CONFIG_HOTPLUG_CPU + if (!cpu_online(cpu)) { + nmi_exit(); + return; + } + #endif + ++nmi_count(cpu); ! if (!rcu_dereference(nmi_callback)(regs, cpu)) default_do_nmi(regs); *************** *** 637,642 **** void set_nmi_callback(nmi_callback_t callback) { ! nmi_callback = callback; } void unset_nmi_callback(void) --- 669,675 ---- void set_nmi_callback(nmi_callback_t callback) { ! rcu_assign_pointer(nmi_callback, callback); } + EXPORT_SYMBOL_GPL(set_nmi_callback); void unset_nmi_callback(void) *************** *** 644,650 **** nmi_callback = dummy_nmi_callback; } #ifdef CONFIG_KPROBES ! fastcall void do_int3(struct pt_regs *regs, long error_code) { if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP) --- 677,684 ---- nmi_callback = dummy_nmi_callback; } + EXPORT_SYMBOL_GPL(unset_nmi_callback); #ifdef CONFIG_KPROBES ! fastcall void __kprobes do_int3(struct pt_regs *regs, long error_code) { if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP) *************** *** 680,689 **** * by user code) */ ! fastcall void do_debug(struct pt_regs * regs, long error_code) { unsigned int condition; struct task_struct *tsk = current; ! __asm__ __volatile__("movl %%db6,%0" : "=r" (condition)); if (notify_die(DIE_DEBUG, "debug", regs, condition, error_code, --- 714,723 ---- * by user code) */ ! fastcall void __kprobes do_debug(struct pt_regs * regs, long error_code) { unsigned int condition; struct task_struct *tsk = current; ! get_debugreg(condition, 6); if (notify_die(DIE_DEBUG, "debug", regs, condition, error_code, *************** *** 737,741 **** * of CS. */ ! if ((regs->xcs & 3) == 0) goto clear_TF_reenable; } --- 771,775 ---- * of CS. */ ! if (!user_mode(regs)) goto clear_TF_reenable; } *************** *** 748,754 **** */ clear_dr7: ! __asm__("movl %0,%%db7" ! : /* no output */ ! : "r" (0)); return; --- 782,786 ---- */ clear_dr7: ! set_debugreg(0, 7); return; *************** *** 797,809 **** cwd = get_fpu_cwd(task); swd = get_fpu_swd(task); ! switch (((~cwd) & swd & 0x3f) | (swd & 0x240)) { ! case 0x000: ! default: break; case 0x001: /* Invalid Op */ ! case 0x041: /* Stack Fault */ ! case 0x241: /* Stack Fault | Direction */ info.si_code = FPE_FLTINV; - /* Should we clear the SF or let user space do it ???? */ break; case 0x002: /* Denormalize */ --- 829,844 ---- cwd = get_fpu_cwd(task); swd = get_fpu_swd(task); ! switch (swd & ~cwd & 0x3f) { ! case 0x000: /* No unmasked exception */ ! return; ! default: /* Multiple exceptions */ break; case 0x001: /* Invalid Op */ ! /* ! * swd & 0x240 == 0x040: Stack Underflow ! * swd & 0x240 == 0x240: Stack Overflow ! * User must clear the SF bit (0x40) if set ! */ info.si_code = FPE_FLTINV; break; case 0x002: /* Denormalize */ *************** *** 895,901 **** return; } - die_if_kernel("cache flush denied", regs, error_code); current->thread.trap_no = 19; current->thread.error_code = error_code; force_sig(SIGSEGV, current); } --- 930,936 ---- return; } current->thread.trap_no = 19; current->thread.error_code = error_code; + die_if_kernel("cache flush denied", regs, error_code); force_sig(SIGSEGV, current); } *************** *** 1000,1004 **** */ idt_descr.address = fix_to_virt(FIX_F00F_IDT); ! __asm__ __volatile__("lidt %0" : : "m" (idt_descr)); } #endif --- 1035,1039 ---- */ idt_descr.address = fix_to_virt(FIX_F00F_IDT); ! load_idt(&idt_descr); } #endif |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:43
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/include/net In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/include/net Modified Files: sock.h Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: sock.h =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/include/net/sock.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** sock.h 24 Jan 2006 00:28:19 -0000 1.3 --- sock.h 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 89,92 **** --- 89,93 ---- struct sock; + struct proto; /** *************** *** 99,106 **** * @skc_bind_node: bind hash linkage for various protocol lookup tables * @skc_refcnt: reference count * * This is the minimal network layer representation of sockets, the header ! * for struct sock and struct tcp_tw_bucket. ! */ struct sock_common { unsigned short skc_family; --- 100,109 ---- * @skc_bind_node: bind hash linkage for various protocol lookup tables * @skc_refcnt: reference count + * @skc_hash: hash value used with various protocol lookup tables + * @skc_prot: protocol handlers inside a network family * * This is the minimal network layer representation of sockets, the header ! * for struct sock and struct inet_timewait_sock. ! */ struct sock_common { unsigned short skc_family; *************** *** 111,119 **** struct hlist_node skc_bind_node; atomic_t skc_refcnt; }; /** * struct sock - network layer representation of sockets ! * @__sk_common: shared layout with tcp_tw_bucket * @sk_shutdown: mask of %SEND_SHUTDOWN and/or %RCV_SHUTDOWN * @sk_userlocks: %SO_SNDBUF and %SO_RCVBUF settings --- 114,124 ---- struct hlist_node skc_bind_node; atomic_t skc_refcnt; + unsigned int skc_hash; + struct proto *skc_prot; }; /** * struct sock - network layer representation of sockets ! * @__sk_common: shared layout with inet_timewait_sock * @sk_shutdown: mask of %SEND_SHUTDOWN and/or %RCV_SHUTDOWN * @sk_userlocks: %SO_SNDBUF and %SO_RCVBUF settings *************** *** 137,145 **** * @sk_route_caps: route capabilities (e.g. %NETIF_F_TSO) * @sk_lingertime: %SO_LINGER l_linger setting - * @sk_hashent: hash entry in several tables (e.g. tcp_ehash) * @sk_backlog: always used with the per-socket spinlock held * @sk_callback_lock: used with the callbacks in the end of this struct * @sk_error_queue: rarely used - * @sk_prot: protocol handlers inside a network family * @sk_prot_creator: sk_prot of original sock creator (see ipv6_setsockopt, IPV6_ADDRFORM for instance) * @sk_err: last error --- 142,148 ---- *************** *** 174,178 **** struct sock { /* ! * Now struct tcp_tw_bucket also uses sock_common, so please just * don't add nothing before this first member (__sk_common) --acme */ --- 177,181 ---- struct sock { /* ! * Now struct inet_timewait_sock also uses sock_common, so please just * don't add nothing before this first member (__sk_common) --acme */ *************** *** 185,188 **** --- 188,193 ---- #define sk_bind_node __sk_common.skc_bind_node #define sk_refcnt __sk_common.skc_refcnt + #define sk_hash __sk_common.skc_hash + #define sk_prot __sk_common.skc_prot unsigned char sk_shutdown : 2, sk_no_check : 2, *************** *** 206,210 **** int sk_sndbuf; int sk_route_caps; - int sk_hashent; unsigned long sk_flags; unsigned long sk_lingertime; --- 211,214 ---- *************** *** 219,223 **** } sk_backlog; struct sk_buff_head sk_error_queue; - struct proto *sk_prot; struct proto *sk_prot_creator; rwlock_t sk_callback_lock; --- 223,226 ---- *************** *** 254,268 **** * Hashed lists helper routines */ ! static inline struct sock *__sk_head(struct hlist_head *head) { return hlist_entry(head->first, struct sock, sk_node); } ! static inline struct sock *sk_head(struct hlist_head *head) { return hlist_empty(head) ? NULL : __sk_head(head); } ! static inline struct sock *sk_next(struct sock *sk) { return sk->sk_node.next ? --- 257,271 ---- * Hashed lists helper routines */ ! static inline struct sock *__sk_head(const struct hlist_head *head) { return hlist_entry(head->first, struct sock, sk_node); } ! static inline struct sock *sk_head(const struct hlist_head *head) { return hlist_empty(head) ? NULL : __sk_head(head); } ! static inline struct sock *sk_next(const struct sock *sk) { return sk->sk_node.next ? *************** *** 270,279 **** } ! static inline int sk_unhashed(struct sock *sk) { return hlist_unhashed(&sk->sk_node); } ! static inline int sk_hashed(struct sock *sk) { return sk->sk_node.pprev != NULL; --- 273,282 ---- } ! static inline int sk_unhashed(const struct sock *sk) { return hlist_unhashed(&sk->sk_node); } ! static inline int sk_hashed(const struct sock *sk) { return sk->sk_node.pprev != NULL; *************** *** 376,380 **** SOCK_BROADCAST, SOCK_TIMESTAMP, - SOCK_BSDISM, SOCK_ZAPPED, SOCK_USE_WRITE_QUEUE, /* whether to call sk->sk_write_space in sock_wfree */ --- 379,382 ---- *************** *** 384,389 **** --- 386,397 ---- SOCK_LOCALROUTE, /* route locally only, %SO_DONTROUTE setting */ SOCK_QUEUE_SHRUNK, /* write queue has been shrunk recently */ + SOCK_BSDISM, }; + static inline void sock_copy_flags(struct sock *nsk, struct sock *osk) + { + nsk->sk_flags = osk->sk_flags; + } + static inline void sock_set_flag(struct sock *sk, enum sock_flags flag) { *************** *** 486,489 **** --- 494,499 ---- extern int sk_wait_data(struct sock *sk, long *timeo); + struct request_sock_ops; + /* Networking protocol blocks we attach to sockets. * socket layer -> transport layer interface *************** *** 549,552 **** --- 559,568 ---- unsigned int obj_size; + kmem_cache_t *twsk_slab; + unsigned int twsk_obj_size; + atomic_t *orphan_count; + + struct request_sock_ops *rsk_prot; + struct module *owner; *************** *** 554,558 **** struct list_head node; ! struct { int inuse; --- 570,576 ---- struct list_head node; ! #ifdef SOCK_REFCNT_DEBUG ! atomic_t socks; ! #endif struct { int inuse; *************** *** 564,567 **** --- 582,610 ---- extern void proto_unregister(struct proto *prot); + #ifdef SOCK_REFCNT_DEBUG + static inline void sk_refcnt_debug_inc(struct sock *sk) + { + atomic_inc(&sk->sk_prot->socks); + } + + static inline void sk_refcnt_debug_dec(struct sock *sk) + { + atomic_dec(&sk->sk_prot->socks); + printk(KERN_DEBUG "%s socket %p released, %d are still alive\n", + sk->sk_prot->name, sk, atomic_read(&sk->sk_prot->socks)); + } + + static inline void sk_refcnt_debug_release(const struct sock *sk) + { + if (atomic_read(&sk->sk_refcnt) != 1) + printk(KERN_DEBUG "Destruction of the %s socket %p delayed, refcnt=%d\n", + sk->sk_prot->name, sk, atomic_read(&sk->sk_refcnt)); + } + #else /* SOCK_REFCNT_DEBUG */ + #define sk_refcnt_debug_inc(sk) do { } while (0) + #define sk_refcnt_debug_dec(sk) do { } while (0) + #define sk_refcnt_debug_release(sk) do { } while (0) + #endif /* SOCK_REFCNT_DEBUG */ + /* Called with local bh disabled */ static __inline__ void sock_prot_inc_use(struct proto *prot) *************** *** 575,578 **** --- 618,630 ---- } + /* With per-bucket locks this operation is not-atomic, so that + * this version is not worse. + */ + static inline void __sk_prot_rehash(struct sock *sk) + { + sk->sk_prot->unhash(sk); + sk->sk_prot->hash(sk); + } + /* About 10 seconds */ #define SOCK_DESTROY_TIME (10*HZ) *************** *** 660,663 **** --- 712,721 ---- } + static inline int sk_stream_wmem_schedule(struct sock *sk, int size) + { + return size <= sk->sk_forward_alloc || + sk_stream_mem_schedule(sk, size, 0); + } + /* Used by processes to "lock" a socket state, so that * interrupts and bottom half handlers won't change it *************** *** 682,695 **** #define bh_unlock_sock(__sk) spin_unlock(&((__sk)->sk_lock.slock)) ! extern struct sock *sk_alloc(int family, int priority, struct proto *prot, int zero_it); extern void sk_free(struct sock *sk); extern struct sk_buff *sock_wmalloc(struct sock *sk, unsigned long size, int force, ! int priority); extern struct sk_buff *sock_rmalloc(struct sock *sk, unsigned long size, int force, ! int priority); extern void sock_wfree(struct sk_buff *skb); extern void sock_rfree(struct sk_buff *skb); --- 740,756 ---- #define bh_unlock_sock(__sk) spin_unlock(&((__sk)->sk_lock.slock)) ! extern struct sock *sk_alloc(int family, ! gfp_t priority, struct proto *prot, int zero_it); extern void sk_free(struct sock *sk); + extern struct sock *sk_clone(const struct sock *sk, + const gfp_t priority); extern struct sk_buff *sock_wmalloc(struct sock *sk, unsigned long size, int force, ! gfp_t priority); extern struct sk_buff *sock_rmalloc(struct sock *sk, unsigned long size, int force, ! gfp_t priority); extern void sock_wfree(struct sk_buff *skb); extern void sock_rfree(struct sk_buff *skb); *************** *** 706,710 **** int noblock, int *errcode); ! extern void *sock_kmalloc(struct sock *sk, int size, int priority); extern void sock_kfree_s(struct sock *sk, void *mem, int size); extern void sk_send_sigurg(struct sock *sk); --- 767,772 ---- int noblock, int *errcode); ! extern void *sock_kmalloc(struct sock *sk, int size, ! gfp_t priority); extern void sock_kfree_s(struct sock *sk, void *mem, int size); extern void sk_send_sigurg(struct sock *sk); *************** *** 977,980 **** --- 1039,1052 ---- } + static inline void sk_setup_caps(struct sock *sk, struct dst_entry *dst) + { + __sk_dst_set(sk, dst); + sk->sk_route_caps = dst->dev->features; + if (sk->sk_route_caps & NETIF_F_TSO) { + if (sock_flag(sk, SOCK_NO_LARGESEND) || dst->header_len) + sk->sk_route_caps &= ~NETIF_F_TSO; + } + } + static inline void sk_charge_skb(struct sock *sk, struct sk_buff *skb) { *************** *** 1130,1142 **** static inline struct sk_buff *sk_stream_alloc_pskb(struct sock *sk, ! int size, int mem, int gfp) { ! struct sk_buff *skb = alloc_skb(size + sk->sk_prot->max_header, gfp); if (skb) { skb->truesize += mem; ! if (sk->sk_forward_alloc >= (int)skb->truesize || ! sk_stream_mem_schedule(sk, skb->truesize, 0)) { ! skb_reserve(skb, sk->sk_prot->max_header); return skb; } --- 1202,1217 ---- static inline struct sk_buff *sk_stream_alloc_pskb(struct sock *sk, ! int size, int mem, ! gfp_t gfp) { ! struct sk_buff *skb; ! int hdr_len; + hdr_len = SKB_DATA_ALIGN(sk->sk_prot->max_header); + skb = alloc_skb_fclone(size + hdr_len, gfp); if (skb) { skb->truesize += mem; ! if (sk_stream_wmem_schedule(sk, skb->truesize)) { ! skb_reserve(skb, hdr_len); return skb; } *************** *** 1150,1154 **** static inline struct sk_buff *sk_stream_alloc_skb(struct sock *sk, ! int size, int gfp) { return sk_stream_alloc_pskb(sk, size, 0, gfp); --- 1225,1230 ---- static inline struct sk_buff *sk_stream_alloc_skb(struct sock *sk, ! int size, ! gfp_t gfp) { return sk_stream_alloc_pskb(sk, size, 0, gfp); *************** *** 1159,1166 **** struct page *page = NULL; ! if (sk->sk_forward_alloc >= (int)PAGE_SIZE || ! sk_stream_mem_schedule(sk, PAGE_SIZE, 0)) ! page = alloc_pages(sk->sk_allocation, 0); ! else { sk->sk_prot->enter_memory_pressure(); sk_stream_moderate_sndbuf(sk); --- 1235,1240 ---- struct page *page = NULL; ! page = alloc_pages(sk->sk_allocation, 0); ! if (!page) { sk->sk_prot->enter_memory_pressure(); sk_stream_moderate_sndbuf(sk); *************** *** 1183,1187 **** } ! static inline int gfp_any(void) { return in_softirq() ? GFP_ATOMIC : GFP_KERNEL; --- 1257,1261 ---- } ! static inline gfp_t gfp_any(void) { return in_softirq() ? GFP_ATOMIC : GFP_KERNEL; *************** *** 1214,1227 **** sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *skb) { ! struct timeval *stamp = &skb->stamp; if (sock_flag(sk, SOCK_RCVTSTAMP)) { /* Race occurred between timestamp enabling and packet receiving. Fill in the current time for now. */ ! if (stamp->tv_sec == 0) ! do_gettimeofday(stamp); put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMP, sizeof(struct timeval), ! stamp); } else ! sk->sk_stamp = *stamp; } --- 1288,1304 ---- sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *skb) { ! struct timeval stamp; ! ! skb_get_timestamp(skb, &stamp); if (sock_flag(sk, SOCK_RCVTSTAMP)) { /* Race occurred between timestamp enabling and packet receiving. Fill in the current time for now. */ ! if (stamp.tv_sec == 0) ! do_gettimeofday(&stamp); ! skb_set_timestamp(skb, &stamp); put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMP, sizeof(struct timeval), ! &stamp); } else ! sk->sk_stamp = stamp; } *************** *** 1248,1256 **** #if 0 ! #define NETDEBUG(x) do { } while (0) ! #define LIMIT_NETDEBUG(x) do {} while(0) #else ! #define NETDEBUG(x) do { x; } while (0) ! #define LIMIT_NETDEBUG(x) do { if (net_ratelimit()) { x; } } while(0) #endif --- 1325,1333 ---- #if 0 ! #define NETDEBUG(fmt, args...) do { } while (0) ! #define LIMIT_NETDEBUG(fmt, args...) do { } while(0) #else ! #define NETDEBUG(fmt, args...) printk(fmt,##args) ! #define LIMIT_NETDEBUG(fmt, args...) do { if (net_ratelimit()) printk(fmt,##args); } while(0) #endif *************** *** 1299,1301 **** --- 1376,1389 ---- #endif + extern void sk_init(void); + + #ifdef CONFIG_SYSCTL + extern struct ctl_table core_table[]; + #endif + + extern int sysctl_optmem_max; + + extern __u32 sysctl_wmem_default; + extern __u32 sysctl_rmem_default; + #endif /* _SOCK_H */ |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:43
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/kernel In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/kernel Modified Files: Makefile exec_domain.c fork.c syscall_ksyms.c Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: Makefile =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/kernel/Makefile,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** Makefile 24 Jan 2006 00:28:19 -0000 1.3 --- Makefile 24 Jan 2006 04:40:18 -0000 1.4 *************** *** 8,17 **** signal.o sys.o kmod.o workqueue.o pid.o \ rcupdate.o intermodule.o extable.o params.o posix-timers.o \ ! kthread.o wait.o kfifo.o sys_ni.o syscall_ksyms.o posix-cpu-timers.o ! obj-$(CONFIG_FUTEX) += futex.o obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o obj-$(CONFIG_SMP) += cpu.o spinlock.o obj-$(CONFIG_UID16) += uid16.o obj-$(CONFIG_MODULES) += module.o --- 8,17 ---- signal.o sys.o kmod.o workqueue.o pid.o \ rcupdate.o intermodule.o extable.o params.o posix-timers.o \ ! kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o syscall_ksyms.o obj-$(CONFIG_FUTEX) += futex.o obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o obj-$(CONFIG_SMP) += cpu.o spinlock.o + obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock.o obj-$(CONFIG_UID16) += uid16.o obj-$(CONFIG_MODULES) += module.o *************** *** 19,22 **** --- 19,23 ---- obj-$(CONFIG_PM) += power/ obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o + obj-$(CONFIG_KEXEC) += kexec.o obj-$(CONFIG_COMPAT) += compat.o obj-$(CONFIG_CPUSETS) += cpuset.o *************** *** 28,32 **** --- 29,35 ---- obj-$(CONFIG_KPROBES) += kprobes.o obj-$(CONFIG_SYSFS) += ksysfs.o + obj-$(CONFIG_DETECT_SOFTLOCKUP) += softlockup.o obj-$(CONFIG_GENERIC_HARDIRQS) += irq/ + obj-$(CONFIG_CRASH_DUMP) += crash_dump.o obj-$(CONFIG_SECCOMP) += seccomp.o Index: exec_domain.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/kernel/exec_domain.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** exec_domain.c 24 Jan 2006 00:28:19 -0000 1.3 --- exec_domain.c 24 Jan 2006 04:40:18 -0000 1.4 *************** *** 48,52 **** .pers_low = PERID_DEFAULT, /* low personality id */ .pers_high = PERID_DEFAULT, /* high personality id */ ! /* .signal_map = ident_map, /* Identity map signals. */ .signal_invmap = ident_map, /* - both ways. */ }; --- 48,52 ---- .pers_low = PERID_DEFAULT, /* low personality id */ .pers_high = PERID_DEFAULT, /* high personality id */ ! .signal_map = ident_map, /* Identity map signals. */ .signal_invmap = ident_map, /* - both ways. */ }; Index: fork.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/kernel/fork.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** fork.c 24 Jan 2006 00:28:19 -0000 1.3 --- fork.c 24 Jan 2006 04:40:18 -0000 1.4 *************** *** 36,39 **** --- 36,40 ---- #include <linux/jiffies.h> #include <linux/futex.h> + #include <linux/rcupdate.h> #include <linux/ptrace.h> #include <linux/mount.h> *************** *** 177,180 **** --- 178,182 ---- /* One for us, one for whoever does the "release_task()" (usually parent) */ atomic_set(&tsk->usage,2); + atomic_set(&tsk->fs_excl, 0); return tsk; } *************** *** 195,198 **** --- 197,201 ---- mm->mmap_cache = NULL; mm->free_area_cache = oldmm->mmap_base; + mm->cached_hole_size = ~0UL; mm->map_count = 0; set_mm_counter(mm, rss, 0); *************** *** 208,213 **** if (mpnt->vm_flags & VM_DONTCOPY) { __vm_stat_account(mm, mpnt->vm_flags, mpnt->vm_file, ! -vma_pages(mpnt)); continue; } --- 211,218 ---- if (mpnt->vm_flags & VM_DONTCOPY) { + long pages = vma_pages(mpnt); + mm->total_vm -= pages; __vm_stat_account(mm, mpnt->vm_flags, mpnt->vm_file, ! -pages); continue; } *************** *** 250,255 **** /* * Link in the new vma and copy the page table entries: ! * link in first so that swapoff can see swap entries, ! * and try_to_unmap_one's find_vma find the new vma. */ spin_lock(&mm->page_table_lock); --- 255,261 ---- /* * Link in the new vma and copy the page table entries: ! * link in first so that swapoff can see swap entries. ! * Note that, exceptionally, here the vma is inserted ! * without holding mm->mmap_sem. */ spin_lock(&mm->page_table_lock); *************** *** 323,326 **** --- 329,333 ---- mm->default_kioctx = (struct kioctx)INIT_KIOCTX(mm->default_kioctx, *mm); mm->free_area_cache = TASK_UNMAPPED_BASE; + mm->cached_hole_size = ~0UL; if (likely(!mm_alloc_pgd(mm))) { *************** *** 560,570 **** } ! static int count_open_files(struct files_struct *files, int size) { int i; /* Find the last open fd */ for (i = size/(8*sizeof(long)); i > 0; ) { ! if (files->open_fds->fds_bits[--i]) break; } --- 567,578 ---- } ! static int count_open_files(struct fdtable *fdt) { + int size = fdt->max_fdset; int i; /* Find the last open fd */ for (i = size/(8*sizeof(long)); i > 0; ) { ! if (fdt->open_fds->fds_bits[--i]) break; } *************** *** 573,576 **** --- 581,611 ---- } + static struct files_struct *alloc_files(void) + { + struct files_struct *newf; + struct fdtable *fdt; + + newf = kmem_cache_alloc(files_cachep, SLAB_KERNEL); + if (!newf) + goto out; + + atomic_set(&newf->count, 1); + + spin_lock_init(&newf->file_lock); + fdt = &newf->fdtab; + fdt->next_fd = 0; + fdt->max_fds = NR_OPEN_DEFAULT; + fdt->max_fdset = __FD_SETSIZE; + fdt->close_on_exec = &newf->close_on_exec_init; + fdt->open_fds = &newf->open_fds_init; + fdt->fd = &newf->fd_array[0]; + INIT_RCU_HEAD(&fdt->rcu); + fdt->free_files = NULL; + fdt->next = NULL; + rcu_assign_pointer(newf->fdt, fdt); + out: + return newf; + } + static int copy_files(unsigned long clone_flags, struct task_struct * tsk) { *************** *** 578,581 **** --- 613,617 ---- struct file **old_fds, **new_fds; int open_files, size, i, error = 0, expand; + struct fdtable *old_fdt, *new_fdt; /* *************** *** 598,618 **** tsk->files = NULL; error = -ENOMEM; ! newf = kmem_cache_alloc(files_cachep, SLAB_KERNEL); ! if (!newf) goto out; - atomic_set(&newf->count, 1); - - spin_lock_init(&newf->file_lock); - newf->next_fd = 0; - newf->max_fds = NR_OPEN_DEFAULT; - newf->max_fdset = __FD_SETSIZE; - newf->close_on_exec = &newf->close_on_exec_init; - newf->open_fds = &newf->open_fds_init; - newf->fd = &newf->fd_array[0]; - spin_lock(&oldf->file_lock); ! ! open_files = count_open_files(oldf, oldf->max_fdset); expand = 0; --- 634,646 ---- tsk->files = NULL; error = -ENOMEM; ! newf = alloc_files(); ! if (!newf) goto out; spin_lock(&oldf->file_lock); ! old_fdt = files_fdtable(oldf); ! new_fdt = files_fdtable(newf); ! size = old_fdt->max_fdset; ! open_files = count_open_files(old_fdt); expand = 0; *************** *** 621,630 **** * Note: we're not a clone task, so the open count won't change. */ ! if (open_files > newf->max_fdset) { ! newf->max_fdset = 0; expand = 1; } ! if (open_files > newf->max_fds) { ! newf->max_fds = 0; expand = 1; } --- 649,658 ---- * Note: we're not a clone task, so the open count won't change. */ ! if (open_files > new_fdt->max_fdset) { ! new_fdt->max_fdset = 0; expand = 1; } ! if (open_files > new_fdt->max_fds) { ! new_fdt->max_fds = 0; expand = 1; } *************** *** 638,649 **** if (error < 0) goto out_release; spin_lock(&oldf->file_lock); } ! old_fds = oldf->fd; ! new_fds = newf->fd; ! memcpy(newf->open_fds->fds_bits, oldf->open_fds->fds_bits, open_files/8); ! memcpy(newf->close_on_exec->fds_bits, oldf->close_on_exec->fds_bits, open_files/8); for (i = open_files; i != 0; i--) { --- 666,684 ---- if (error < 0) goto out_release; + new_fdt = files_fdtable(newf); + /* + * Reacquire the oldf lock and a pointer to its fd table + * who knows it may have a new bigger fd table. We need + * the latest pointer. + */ spin_lock(&oldf->file_lock); + old_fdt = files_fdtable(oldf); } ! old_fds = old_fdt->fd; ! new_fds = new_fdt->fd; ! memcpy(new_fdt->open_fds->fds_bits, old_fdt->open_fds->fds_bits, open_files/8); ! memcpy(new_fdt->close_on_exec->fds_bits, old_fdt->close_on_exec->fds_bits, open_files/8); for (i = open_files; i != 0; i--) { *************** *** 658,679 **** * fd is available to the new process. */ ! FD_CLR(open_files - i, newf->open_fds); } ! *new_fds++ = f; } spin_unlock(&oldf->file_lock); /* compute the remainder to be cleared */ ! size = (newf->max_fds - open_files) * sizeof(struct file *); /* This is long word aligned thus could use a optimized version */ memset(new_fds, 0, size); ! if (newf->max_fdset > open_files) { ! int left = (newf->max_fdset-open_files)/8; int start = open_files / (8 * sizeof(unsigned long)); ! memset(&newf->open_fds->fds_bits[start], 0, left); ! memset(&newf->close_on_exec->fds_bits[start], 0, left); } --- 693,714 ---- * fd is available to the new process. */ ! FD_CLR(open_files - i, new_fdt->open_fds); } ! rcu_assign_pointer(*new_fds++, f); } spin_unlock(&oldf->file_lock); /* compute the remainder to be cleared */ ! size = (new_fdt->max_fds - open_files) * sizeof(struct file *); /* This is long word aligned thus could use a optimized version */ memset(new_fds, 0, size); ! if (new_fdt->max_fdset > open_files) { ! int left = (new_fdt->max_fdset-open_files)/8; int start = open_files / (8 * sizeof(unsigned long)); ! memset(&new_fdt->open_fds->fds_bits[start], 0, left); ! memset(&new_fdt->close_on_exec->fds_bits[start], 0, left); } *************** *** 684,690 **** out_release: ! free_fdset (newf->close_on_exec, newf->max_fdset); ! free_fdset (newf->open_fds, newf->max_fdset); ! free_fd_array(newf->fd, newf->max_fds); kmem_cache_free(files_cachep, newf); goto out; --- 719,725 ---- out_release: ! free_fdset (new_fdt->close_on_exec, new_fdt->max_fdset); ! free_fdset (new_fdt->open_fds, new_fdt->max_fdset); ! free_fd_array(new_fdt->fd, new_fdt->max_fds); kmem_cache_free(files_cachep, newf); goto out; *************** *** 814,818 **** unsigned long new_flags = p->flags; ! new_flags &= ~PF_SUPERPRIV; new_flags |= PF_FORKNOEXEC; if (!(clone_flags & CLONE_PTRACE)) --- 849,853 ---- unsigned long new_flags = p->flags; ! new_flags &= ~(PF_SUPERPRIV | PF_NOFREEZE); new_flags |= PF_FORKNOEXEC; if (!(clone_flags & CLONE_PTRACE)) *************** *** 990,993 **** --- 1025,1031 ---- */ clear_tsk_thread_flag(p, TIF_SYSCALL_TRACE); + #ifdef TIF_SYSCALL_EMU + clear_tsk_thread_flag(p, TIF_SYSCALL_EMU); + #endif /* Our parent execution domain becomes current domain *************** *** 1001,1007 **** p->exit_state = 0; - /* Perform scheduler related setup */ - sched_fork(p); - /* * Ok, make it visible to the rest of the system. --- 1039,1042 ---- *************** *** 1012,1027 **** INIT_LIST_HEAD(&p->ptrace_list); /* Need tasklist lock for parent etc handling! */ write_lock_irq(&tasklist_lock); /* ! * The task hasn't been attached yet, so cpus_allowed mask cannot ! * have changed. The cpus_allowed mask of the parent may have ! * changed after it was copied first time, and it may then move to ! * another CPU - so we re-copy it here and set the child's CPU to ! * the parent's CPU. This avoids alot of nasty races. */ p->cpus_allowed = current->cpus_allowed; ! set_task_cpu(p, smp_processor_id()); /* --- 1047,1069 ---- INIT_LIST_HEAD(&p->ptrace_list); + /* Perform scheduler related setup. Assign this task to a CPU. */ + sched_fork(p, clone_flags); + /* Need tasklist lock for parent etc handling! */ write_lock_irq(&tasklist_lock); /* ! * The task hasn't been attached yet, so its cpus_allowed mask will ! * not be changed, nor will its assigned CPU. ! * ! * The cpus_allowed mask of the parent may have changed after it was ! * copied first time - so re-copy it here, then check the child's CPU ! * to ensure it is on a valid CPU (and if not, just force it back to ! * parent's CPU). This avoids alot of nasty races. */ p->cpus_allowed = current->cpus_allowed; ! if (unlikely(!cpu_isset(task_cpu(p), p->cpus_allowed) || ! !cpu_online(task_cpu(p)))) ! set_task_cpu(p, smp_processor_id()); /* *************** *** 1085,1088 **** --- 1127,1135 ---- } + /* + * inherit ioprio + */ + p->ioprio = current->ioprio; + SET_LINKS(p); if (unlikely(p->ptrace & PT_PTRACED)) *************** *** 1100,1103 **** --- 1147,1153 ---- } + if (!current->signal->tty && p->signal->tty) + p->signal->tty = NULL; + nr_threads++; total_forks++; Index: syscall_ksyms.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/kernel/syscall_ksyms.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** syscall_ksyms.c 24 Jan 2006 00:28:19 -0000 1.2 --- syscall_ksyms.c 24 Jan 2006 04:40:18 -0000 1.3 *************** *** 4,13 **** */ - #include <linux/config.h> - #include <linux/module.h> - #include <linux/personality.h> #define __KERNEL_SYSCALLS__ #include <linux/unistd.h> #include <linux/syscalls.h> #include <linux/msg.h> #include <linux/sem.h> --- 4,14 ---- */ #define __KERNEL_SYSCALLS__ #include <linux/unistd.h> #include <linux/syscalls.h> + + #include <linux/config.h> + #include <linux/module.h> + #include <linux/personality.h> #include <linux/msg.h> #include <linux/sem.h> *************** *** 15,34 **** #include <linux/fs.h> - - asmlinkage long sys_rt_sigaction(int sig, - const struct sigaction __user *act, - struct sigaction __user *oact, - size_t sigsetsize); - extern asmlinkage long sys_sigaltstack(const stack_t *uss, stack_t *uoss); - extern asmlinkage int sys_sigsuspend(int history0, int history1, - old_sigset_t mask); - - - - - - - - EXPORT_SYMBOL(sys_uselib); EXPORT_SYMBOL(sys_sync); --- 16,19 ---- |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:43
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/abi/svr4 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/abi/svr4 Modified Files: filio.c ipc.c signal.c sockio.c socksys.c Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: filio.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/abi/svr4/filio.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** filio.c 23 Jan 2006 22:55:45 -0000 1.2 --- filio.c 24 Jan 2006 04:40:17 -0000 1.3 *************** *** 39,47 **** svr4_fil_ioctl(int fd, u_int cmd, caddr_t data) { switch (cmd) { /* FIOCLEX */ case BSD__IOV('f', 1): case BSD__IO('f', 1): ! FD_SET(fd, current->files->close_on_exec); return 0; --- 39,51 ---- svr4_fil_ioctl(int fd, u_int cmd, caddr_t data) { + + struct fdtable *fdt; + fdt = files_fdtable(current->files); + switch (cmd) { /* FIOCLEX */ case BSD__IOV('f', 1): case BSD__IO('f', 1): ! FD_SET(fd, fdt->close_on_exec); return 0; *************** *** 49,53 **** case BSD__IOV('f', 2): case BSD__IO('f', 2): ! FD_CLR(fd, current->files->close_on_exec); return 0; --- 53,57 ---- case BSD__IOV('f', 2): case BSD__IO('f', 2): ! FD_CLR(fd, fdt->close_on_exec); return 0; Index: ipc.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/abi/svr4/ipc.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** ipc.c 24 Jan 2006 00:28:19 -0000 1.3 --- ipc.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 58,64 **** #include <linux/msg.h> - extern asmlinkage int sys_ipc(uint call, int first, int second, - int third, void *ptr, long fifth); - #include <asm/uaccess.h> #include <asm/ipc.h> --- 58,61 ---- Index: signal.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/abi/svr4/signal.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** signal.c 24 Jan 2006 00:28:19 -0000 1.3 --- signal.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 31,41 **** #include <linux/syscalls.h> - asmlinkage long sys_rt_sigaction(int sig, - const struct sigaction __user *act, - struct sigaction __user *oact, - size_t sigsetsize); - extern asmlinkage int sys_sigsuspend(int history0, int history1, - old_sigset_t mask); - #include <asm/system.h> #include <asm/uaccess.h> --- 31,34 ---- Index: sockio.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/abi/svr4/sockio.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** sockio.c 24 Jan 2006 00:28:19 -0000 1.3 --- sockio.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 37,41 **** goto fput; - #if defined(CONFIG_ABI_XTI) if (S_ISSOCK(ip->i_mode)) { struct T_private *ti = Priv(fp); --- 37,40 ---- *************** *** 50,54 **** } } ! #endif fput(fp); --- 49,53 ---- } } ! fput(fp); *************** *** 83,87 **** error = 0; ! if (!S_ISSOCK(ip->i_mode)) goto fput; --- 82,86 ---- error = 0; ! if (!S_ISSOCK(ip->i_mode)) goto fput; Index: socksys.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/abi/svr4/socksys.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** socksys.c 24 Jan 2006 00:28:19 -0000 1.3 --- socksys.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 407,411 **** * just the pseudo device transport provider. */ ! if (!ip || !S_ISSOCK(ip->i_mode)) goto out; if (fp->private_data) { --- 407,412 ---- * just the pseudo device transport provider. */ ! if (!ip || !S_ISSOCK(ip->i_mode)) ! goto out; if (fp->private_data) { *************** *** 455,463 **** { int fd, error; ! /* ! if (fp->f_dentry->d_inode->i_sock) BUG(); ! */ ! for (fd = 0; fd < current->files->max_fdset; fd++) { if (fcheck(fd) == fp) { error = socksys_fdinit(fd, 0, NULL, NULL); --- 456,467 ---- { int fd, error; ! struct fdtable *fdt; ! fdt = files_fdtable(current->files); ! ! ! if (S_ISSOCK(fp->f_dentry->d_inode->i_mode)) BUG(); ! ! for (fd = 0; fd < fdt->max_fdset; fd++) { if (fcheck(fd) == fp) { error = socksys_fdinit(fd, 0, NULL, NULL); *************** *** 477,485 **** { int fd, error; ! /* ! if (fp->f_dentry->d_inode->i_sock) BUG(); ! */ ! for (fd = 0; fd < current->files->max_fdset; fd++) { if (fcheck(fd) == fp) { error = socksys_fdinit(fd, 1, buf, &count); --- 481,491 ---- { int fd, error; ! struct fdtable *fdt; ! fdt = files_fdtable(current->files); ! ! if (S_ISSOCK(fp->f_dentry->d_inode->i_mode)) BUG(); ! ! for (fd = 0; fd < fdt->max_fdset; fd++) { if (fcheck(fd) == fp) { error = socksys_fdinit(fd, 1, buf, &count); |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:43
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/net In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/net Modified Files: socket.c Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: socket.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/net/socket.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** socket.c 24 Jan 2006 00:28:19 -0000 1.3 --- socket.c 24 Jan 2006 04:40:18 -0000 1.4 *************** *** 71,74 **** --- 71,76 ---- #include <linux/wanrouter.h> #include <linux/if_bridge.h> + #include <linux/if_frad.h> + #include <linux/if_vlan.h> #include <linux/init.h> #include <linux/poll.h> *************** *** 82,85 **** --- 84,88 ---- #include <linux/compat.h> #include <linux/kmod.h> + #include <linux/audit.h> #ifdef CONFIG_NET_RADIO *************** *** 227,231 **** if(copy_from_user(kaddr,uaddr,ulen)) return -EFAULT; ! return 0; } --- 230,234 ---- if(copy_from_user(kaddr,uaddr,ulen)) return -EFAULT; ! return audit_sockaddr(ulen, kaddr); } *************** *** 272,276 **** #define SOCKFS_MAGIC 0x534F434B ! static kmem_cache_t * sock_inode_cachep; static struct inode *sock_alloc_inode(struct super_block *sb) --- 275,279 ---- #define SOCKFS_MAGIC 0x534F434B ! static kmem_cache_t * sock_inode_cachep __read_mostly; static struct inode *sock_alloc_inode(struct super_block *sb) *************** *** 331,335 **** } ! static struct vfsmount *sock_mnt; static struct file_system_type sock_fs_type = { --- 334,338 ---- } ! static struct vfsmount *sock_mnt __read_mostly; static struct file_system_type sock_fs_type = { *************** *** 383,389 **** } ! sprintf(name, "[%lu]", SOCK_INODE(sock)->i_ino); this.name = name; - this.len = strlen(name); this.hash = SOCK_INODE(sock)->i_ino; --- 386,391 ---- } ! this.len = sprintf(name, "[%lu]", SOCK_INODE(sock)->i_ino); this.name = name; this.hash = SOCK_INODE(sock)->i_ino; *************** *** 405,408 **** --- 407,411 ---- file->f_flags = O_RDWR; file->f_pos = 0; + file->private_data = sock; fd_install(fd, file); } *************** *** 437,440 **** --- 440,446 ---- } + if (file->f_op == &socket_file_ops) + return file->private_data; /* set in sock_map_fd */ + inode = file->f_dentry->d_inode; if (!S_ISSOCK(inode->i_mode)) { *************** *** 662,666 **** iocb->private = x; x->kiocb = iocb; ! sock = SOCKET_I(iocb->ki_filp->f_dentry->d_inode); x->async_msg.msg_name = NULL; --- 668,672 ---- iocb->private = x; x->kiocb = iocb; ! sock = iocb->ki_filp->private_data; x->async_msg.msg_name = NULL; *************** *** 704,708 **** iocb->private = x; x->kiocb = iocb; ! sock = SOCKET_I(iocb->ki_filp->f_dentry->d_inode); x->async_msg.msg_name = NULL; --- 710,714 ---- iocb->private = x; x->kiocb = iocb; ! sock = iocb->ki_filp->private_data; x->async_msg.msg_name = NULL; *************** *** 721,731 **** } ! ssize_t sock_sendpage(struct file *file, struct page *page, ! int offset, size_t size, loff_t *ppos, int more) { struct socket *sock; int flags; ! sock = SOCKET_I(file->f_dentry->d_inode); flags = !(file->f_flags & O_NONBLOCK) ? 0 : MSG_DONTWAIT; --- 727,737 ---- } ! static ssize_t sock_sendpage(struct file *file, struct page *page, ! int offset, size_t size, loff_t *ppos, int more) { struct socket *sock; int flags; ! sock = file->private_data; flags = !(file->f_flags & O_NONBLOCK) ? 0 : MSG_DONTWAIT; *************** *** 736,740 **** } ! static int sock_readv_writev(int type, struct inode * inode, struct file * file, const struct iovec * iov, long count, size_t size) --- 742,746 ---- } ! static int sock_readv_writev(int type, struct file * file, const struct iovec * iov, long count, size_t size) *************** *** 743,747 **** struct socket *sock; ! sock = SOCKET_I(inode); msg.msg_name = NULL; --- 749,753 ---- struct socket *sock; ! sock = file->private_data; msg.msg_name = NULL; *************** *** 770,774 **** for (i = 0 ; i < count ; i++) tot_len += vector[i].iov_len; ! return sock_readv_writev(VERIFY_WRITE, file->f_dentry->d_inode, file, vector, count, tot_len); } --- 776,780 ---- for (i = 0 ; i < count ; i++) tot_len += vector[i].iov_len; ! return sock_readv_writev(VERIFY_WRITE, file, vector, count, tot_len); } *************** *** 781,785 **** for (i = 0 ; i < count ; i++) tot_len += vector[i].iov_len; ! return sock_readv_writev(VERIFY_READ, file->f_dentry->d_inode, file, vector, count, tot_len); } --- 787,791 ---- for (i = 0 ; i < count ; i++) tot_len += vector[i].iov_len; ! return sock_readv_writev(VERIFY_READ, file, vector, count, tot_len); } *************** *** 835,839 **** int pid, err; ! sock = SOCKET_I(file->f_dentry->d_inode); if (cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + 15)) { err = dev_ioctl(cmd, argp); --- 841,845 ---- int pid, err; ! sock = file->private_data; if (cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + 15)) { err = dev_ioctl(cmd, argp); *************** *** 934,938 **** * We can't return errors to poll, so it's either yes or no. */ ! sock = SOCKET_I(file->f_dentry->d_inode); return sock->ops->poll(file, sock, wait); } --- 940,944 ---- * We can't return errors to poll, so it's either yes or no. */ ! sock = file->private_data; return sock->ops->poll(file, sock, wait); } *************** *** 940,949 **** static int sock_mmap(struct file * file, struct vm_area_struct * vma) { ! struct socket *sock = SOCKET_I(file->f_dentry->d_inode); return sock->ops->mmap(file, sock, vma); } ! int sock_close(struct inode *inode, struct file *filp) { /* --- 946,955 ---- static int sock_mmap(struct file * file, struct vm_area_struct * vma) { ! struct socket *sock = file->private_data; return sock->ops->mmap(file, sock, vma); } ! static int sock_close(struct inode *inode, struct file *filp) { /* *************** *** 990,994 **** } ! sock = SOCKET_I(filp->f_dentry->d_inode); if ((sk=sock->sk) == NULL) { --- 996,1000 ---- } ! sock = filp->private_data; if ((sk=sock->sk) == NULL) { *************** *** 1140,1145 **** goto out_release; ! if ((err = net_families[family]->create(sock, protocol)) < 0) goto out_module_put; /* * Now to bump the refcnt of the [loadable] module that owns this --- 1146,1154 ---- goto out_release; ! if ((err = net_families[family]->create(sock, protocol)) < 0) { ! sock->ops = NULL; goto out_module_put; + } + /* * Now to bump the refcnt of the [loadable] module that owns this *************** *** 1355,1362 **** newsock->ops = sock->ops; - err = security_socket_accept(sock, newsock); - if (err) - goto out_release; - /* * We don't need try_module_get here, as the listening socket (sock) --- 1364,1367 ---- *************** *** 1365,1368 **** --- 1370,1377 ---- __module_get(newsock->ops->owner); + err = security_socket_accept(sock, newsock); + if (err) + goto out_release; + err = sock->ops->accept(sock, newsock, sock->file->f_flags); if (err < 0) *************** *** 1695,1699 **** char address[MAX_SOCK_ADDR]; struct iovec iovstack[UIO_FASTIOV], *iov = iovstack; ! unsigned char ctl[sizeof(struct cmsghdr) + 20]; /* 20 is size of ipv6_pktinfo */ unsigned char *ctl_buf = ctl; struct msghdr msg_sys; --- 1704,1710 ---- char address[MAX_SOCK_ADDR]; struct iovec iovstack[UIO_FASTIOV], *iov = iovstack; ! unsigned char ctl[sizeof(struct cmsghdr) + 20] ! __attribute__ ((aligned (sizeof(__kernel_size_t)))); ! /* 20 is size of ipv6_pktinfo */ unsigned char *ctl_buf = ctl; struct msghdr msg_sys; *************** *** 1740,1747 **** ctl_len = msg_sys.msg_controllen; if ((MSG_CMSG_COMPAT & flags) && ctl_len) { ! err = cmsghdr_from_user_compat_to_kern(&msg_sys, ctl, sizeof(ctl)); if (err) goto out_freeiov; ctl_buf = msg_sys.msg_control; } else if (ctl_len) { if (ctl_len > sizeof(ctl)) --- 1751,1759 ---- ctl_len = msg_sys.msg_controllen; if ((MSG_CMSG_COMPAT & flags) && ctl_len) { ! err = cmsghdr_from_user_compat_to_kern(&msg_sys, sock->sk, ctl, sizeof(ctl)); if (err) goto out_freeiov; ctl_buf = msg_sys.msg_control; + ctl_len = msg_sys.msg_controllen; } else if (ctl_len) { if (ctl_len > sizeof(ctl)) *************** *** 1856,1860 **** goto out_freeiov; } ! err = __put_user(msg_sys.msg_flags, COMPAT_FLAGS(msg)); if (err) goto out_freeiov; --- 1868,1873 ---- goto out_freeiov; } ! err = __put_user((msg_sys.msg_flags & ~MSG_CMSG_COMPAT), ! COMPAT_FLAGS(msg)); if (err) goto out_freeiov; *************** *** 1907,1911 **** if (copy_from_user(a, args, nargs[call])) return -EFAULT; ! a0=a[0]; a1=a[1]; --- 1920,1928 ---- if (copy_from_user(a, args, nargs[call])) return -EFAULT; ! ! err = audit_socketcall(nargs[call]/sizeof(unsigned long), a); ! if (err) ! return err; ! a0=a[0]; a1=a[1]; *************** *** 2020,2026 **** } - - extern void sk_init(void); - void __init sock_init(void) { --- 2037,2040 ---- |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:43
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/fs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/fs Modified Files: Makefile binfmt_coff.c binfmt_xout.c exec.c pipe.c Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: Makefile =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/fs/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** Makefile 23 Jan 2006 22:55:45 -0000 1.2 --- Makefile 24 Jan 2006 04:40:17 -0000 1.3 *************** *** 11,15 **** --- 11,17 ---- attr.o bad_inode.o file.o filesystems.o namespace.o aio.o \ seq_file.o xattr.o libfs.o fs-writeback.o mpage.o direct-io.o \ + ioprio.o + obj-$(CONFIG_INOTIFY) += inotify.o obj-$(CONFIG_EPOLL) += eventpoll.o obj-$(CONFIG_COMPAT) += compat.o *************** *** 34,37 **** --- 36,40 ---- obj-$(CONFIG_FS_MBCACHE) += mbcache.o obj-$(CONFIG_FS_POSIX_ACL) += posix_acl.o xattr_acl.o + obj-$(CONFIG_NFS_COMMON) += nfs_common/ obj-$(CONFIG_QUOTA) += dquot.o *************** *** 89,96 **** --- 92,102 ---- obj-$(CONFIG_AUTOFS4_FS) += autofs4/ obj-$(CONFIG_ADFS_FS) += adfs/ + obj-$(CONFIG_FUSE_FS) += fuse/ obj-$(CONFIG_UDF_FS) += udf/ + obj-$(CONFIG_RELAYFS_FS) += relayfs/ obj-$(CONFIG_SUN_OPENPROMFS) += openpromfs/ obj-$(CONFIG_JFS_FS) += jfs/ obj-$(CONFIG_XFS_FS) += xfs/ + obj-$(CONFIG_9P_FS) += 9p/ obj-$(CONFIG_AFS_FS) += afs/ obj-$(CONFIG_BEFS_FS) += befs/ Index: binfmt_coff.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/fs/binfmt_coff.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** binfmt_coff.c 24 Jan 2006 00:28:19 -0000 1.3 --- binfmt_coff.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 564,568 **** current->mm->mmap = NULL; current->flags &= ~PF_FORKNOEXEC; ! set_mm_counter(current->mm, rss, 0); /* --- 564,568 ---- current->mm->mmap = NULL; current->flags &= ~PF_FORKNOEXEC; ! current->mm->_rss = 0; /* Index: binfmt_xout.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/fs/binfmt_xout.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** binfmt_xout.c 24 Jan 2006 00:28:19 -0000 1.3 --- binfmt_xout.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 33,46 **** #include <linux/xout.h> - extern int sys_modify_ldt(int func, void *ptr, unsigned long bytecount); - /*EXPORT_SYMBOL(sys_modify_ldt);*/ - - #include <asm/uaccess.h> #include <asm/desc.h> MODULE_DESCRIPTION("Support for the Microsoft a.out (x.out) binary format"); MODULE_AUTHOR("Mike Jagdis, Christoph Hellwig"); MODULE_LICENSE("GPL"); /* * This is the name of the overlay library used for handling --- 33,45 ---- #include <linux/xout.h> #include <asm/uaccess.h> #include <asm/desc.h> + + MODULE_DESCRIPTION("Support for the Microsoft a.out (x.out) binary format"); MODULE_AUTHOR("Mike Jagdis, Christoph Hellwig"); MODULE_LICENSE("GPL"); + /* * This is the name of the overlay library used for handling *************** *** 560,564 **** current->mm->mmap = NULL; ! set_mm_counter(current->mm, rss, 0); if ((err = setup_arg_pages(bpp, STACK_TOP, EXSTACK_DEFAULT)) < 0) { --- 559,563 ---- current->mm->mmap = NULL; ! current->mm->_rss = 0; if ((err = setup_arg_pages(bpp, STACK_TOP, EXSTACK_DEFAULT)) < 0) { Index: exec.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/fs/exec.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** exec.c 24 Jan 2006 00:28:19 -0000 1.2 --- exec.c 24 Jan 2006 04:40:17 -0000 1.3 *************** *** 59,62 **** --- 59,65 ---- int core_uses_pid; char core_pattern[65] = "core"; + int suid_dumpable = 0; + + EXPORT_SYMBOL(suid_dumpable); /* The maximal length of core_pattern is also specified in sysctl.c */ *************** *** 419,427 **** return -ENOMEM; - if (security_vm_enough_memory(arg_size >> PAGE_SHIFT)) { - kmem_cache_free(vm_area_cachep, mpnt); - return -ENOMEM; - } - memset(mpnt, 0, sizeof(*mpnt)); --- 422,425 ---- *************** *** 640,643 **** --- 638,653 ---- if (thread_group_leader(current)) count = 1; + else { + /* + * The SIGALRM timer survives the exec, but needs to point + * at us as the new group leader now. We have a race with + * a timer firing now getting the old leader, so we need to + * synchronize with any firing (by calling del_timer_sync) + * before we can safely let the old group leader die. + */ + sig->real_timer.data = (unsigned long)current; + if (del_timer_sync(&sig->real_timer)) + add_timer(&sig->real_timer); + } while (atomic_read(&sig->count) > count) { sig->group_exit_task = current; *************** *** 650,653 **** --- 660,664 ---- sig->group_exit_task = NULL; sig->notify_count = 0; + sig->real_timer.data = (unsigned long)current; spin_unlock_irq(lock); *************** *** 676,683 **** write_lock_irq(&tasklist_lock); ! if (leader->tgid != current->tgid) ! BUG(); ! if (current->pid == current->tgid) ! BUG(); /* * An exec() starts a new thread group with the --- 687,692 ---- write_lock_irq(&tasklist_lock); ! BUG_ON(leader->tgid != current->tgid); ! BUG_ON(current->pid == current->tgid); /* * An exec() starts a new thread group with the *************** *** 727,738 **** proc_pid_flush(proc_dentry2); ! if (exit_state != EXIT_ZOMBIE) ! BUG(); release_task(leader); } /* ! * Now there are really no other threads at all, ! * so it's safe to stop telling them to kill themselves. */ sig->flags = 0; --- 736,746 ---- proc_pid_flush(proc_dentry2); ! BUG_ON(exit_state != EXIT_ZOMBIE); release_task(leader); } /* ! * There may be one thread left which is just exiting, ! * but it's safe to stop telling the group to kill themselves. */ sig->flags = 0; *************** *** 773,780 **** } ! if (!thread_group_empty(current)) ! BUG(); ! if (!thread_group_leader(current)) ! BUG(); return 0; } --- 781,785 ---- } ! BUG_ON(!thread_group_leader(current)); return 0; } *************** *** 788,791 **** --- 793,797 ---- { long j = -1; + struct fdtable *fdt; spin_lock(&files->file_lock); *************** *** 795,804 **** j++; i = j * __NFDBITS; ! if (i >= files->max_fds || i >= files->max_fdset) break; ! set = files->close_on_exec->fds_bits[j]; if (!set) continue; ! files->close_on_exec->fds_bits[j] = 0; spin_unlock(&files->file_lock); for ( ; set ; i++,set >>= 1) { --- 801,811 ---- j++; i = j * __NFDBITS; ! fdt = files_fdtable(files); ! if (i >= fdt->max_fds || i >= fdt->max_fdset) break; ! set = fdt->close_on_exec->fds_bits[j]; if (!set) continue; ! fdt->close_on_exec->fds_bits[j] = 0; spin_unlock(&files->file_lock); for ( ; set ; i++,set >>= 1) { *************** *** 869,872 **** --- 876,882 ---- if (current->euid == current->uid && current->egid == current->gid) current->mm->dumpable = 1; + else + current->mm->dumpable = suid_dumpable; + name = bprm->filename; *************** *** 889,893 **** (bprm->interp_flags & BINPRM_FLAGS_ENFORCE_NONDUMP)) { suid_keys(current); ! current->mm->dumpable = 0; } --- 899,903 ---- (bprm->interp_flags & BINPRM_FLAGS_ENFORCE_NONDUMP)) { suid_keys(current); ! current->mm->dumpable = suid_dumpable; } *************** *** 1439,1442 **** --- 1449,1454 ---- struct file * file; int retval = 0; + int fsuid = current->fsuid; + int flag = 0; binfmt = current->binfmt; *************** *** 1448,1451 **** --- 1460,1473 ---- goto fail; } + + /* + * We cannot trust fsuid as being the "true" uid of the + * process nor do we know its entire history. We only know it + * was tainted so we dump it as root in mode 2. + */ + if (mm->dumpable == 2) { /* Setuid core dump mode */ + flag = O_EXCL; /* Stop rewrite attacks */ + current->fsuid = 0; /* Dump root private */ + } mm->dumpable = 0; init_completion(&mm->core_done); *************** *** 1473,1477 **** format_corename(corename, core_pattern, signr); unlock_kernel(); ! file = filp_open(corename, O_CREAT | 2 | O_NOFOLLOW | O_LARGEFILE, 0600); if (IS_ERR(file)) goto fail_unlock; --- 1495,1499 ---- format_corename(corename, core_pattern, signr); unlock_kernel(); ! file = filp_open(corename, O_CREAT | 2 | O_NOFOLLOW | O_LARGEFILE | flag, 0600); if (IS_ERR(file)) goto fail_unlock; *************** *** 1498,1501 **** --- 1520,1524 ---- filp_close(file, NULL); fail_unlock: + current->fsuid = fsuid; complete_all(&mm->core_done); fail: Index: pipe.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/fs/pipe.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** pipe.c 24 Jan 2006 00:28:19 -0000 1.3 --- pipe.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 40,44 **** DEFINE_WAIT(wait); ! prepare_to_wait(PIPE_WAIT(*inode), &wait, TASK_INTERRUPTIBLE); up(PIPE_SEM(*inode)); schedule(); --- 40,48 ---- DEFINE_WAIT(wait); ! /* ! * Pipes are system-local resources, so sleeping on them ! * is considered a noninteractive wait: ! */ ! prepare_to_wait(PIPE_WAIT(*inode), &wait, TASK_INTERRUPTIBLE|TASK_NONINTERACTIVE); up(PIPE_SEM(*inode)); schedule(); *************** *** 416,419 **** --- 420,427 ---- if (filp->f_mode & FMODE_WRITE) { mask |= (nrbufs < PIPE_BUFFERS) ? POLLOUT | POLLWRNORM : 0; + /* + * Most Unices do not set POLLERR for FIFOs but on Linux they + * behave exactly like pipes for poll(). + */ if (!PIPE_READERS(*inode)) mask |= POLLERR; *************** *** 423,429 **** } - /* FIXME: most Unices do not set POLLERR for fifos */ - #define fifo_poll pipe_poll - static int pipe_release(struct inode *inode, int decr, int decw) --- 431,434 ---- *************** *** 569,573 **** .readv = pipe_readv, .write = bad_pipe_w, ! .poll = fifo_poll, .ioctl = pipe_ioctl, .open = pipe_read_open, --- 574,578 ---- .readv = pipe_readv, .write = bad_pipe_w, ! .poll = pipe_poll, .ioctl = pipe_ioctl, .open = pipe_read_open, *************** *** 581,585 **** .write = pipe_write, .writev = pipe_writev, ! .poll = fifo_poll, .ioctl = pipe_ioctl, .open = pipe_write_open, --- 586,590 ---- .write = pipe_write, .writev = pipe_writev, ! .poll = pipe_poll, .ioctl = pipe_ioctl, .open = pipe_write_open, *************** *** 594,598 **** .write = pipe_write, .writev = pipe_writev, ! .poll = fifo_poll, .ioctl = pipe_ioctl, .open = pipe_rdwr_open, --- 599,603 ---- .write = pipe_write, .writev = pipe_writev, ! .poll = pipe_poll, .ioctl = pipe_ioctl, .open = pipe_rdwr_open, |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:43
|
Update of /cvsroot/linux-abi/linux-abi/linux-26 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26 Modified Files: Makefile Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: Makefile =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/Makefile,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** Makefile 24 Jan 2006 00:28:19 -0000 1.3 --- Makefile 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 1,7 **** VERSION = 2 PATCHLEVEL = 6 ! SUBLEVEL = 12 EXTRAVERSION = ! NAME=Woozy Numbat # *DOCUMENTATION* --- 1,7 ---- VERSION = 2 PATCHLEVEL = 6 ! SUBLEVEL = 14 EXTRAVERSION = ! NAME=Affluent Albatross # *DOCUMENTATION* *************** *** 110,117 **** $(filter-out _all,$(MAKECMDGOALS)) _all: ! $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \ ! KBUILD_SRC=$(CURDIR) KBUILD_VERBOSE=$(KBUILD_VERBOSE) \ ! KBUILD_CHECK=$(KBUILD_CHECK) KBUILD_EXTMOD="$(KBUILD_EXTMOD)" \ ! -f $(CURDIR)/Makefile $@ # Leave processing to above invocation of make --- 110,116 ---- $(filter-out _all,$(MAKECMDGOALS)) _all: ! $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \ ! KBUILD_SRC=$(CURDIR) \ ! KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile $@ # Leave processing to above invocation of make *************** *** 234,238 **** endif ! export KBUILD_MODULES KBUILD_BUILTIN KBUILD_VERBOSE export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD --- 233,237 ---- endif ! export KBUILD_MODULES KBUILD_BUILTIN export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD *************** *** 282,286 **** # cc-option ! # Usage: cflags-y += $(call gcc-option, -march=winchip-c6, -march=i586) cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \ --- 281,285 ---- # cc-option ! # Usage: cflags-y += $(call cc-option, -march=winchip-c6, -march=i586) cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \ *************** *** 310,313 **** --- 309,315 ---- MAKEFLAGS += --include-dir=$(srctree) + # We need some generic definitions + include $(srctree)/scripts/Kbuild.include + # For maximum performance (+ possibly random breakage, uncomment # the following) *************** *** 333,337 **** CHECK = sparse ! CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ MODFLAGS = -DMODULE CFLAGS_MODULE = $(MODFLAGS) --- 335,339 ---- CHECK = sparse ! CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ $(CF) MODFLAGS = -DMODULE CFLAGS_MODULE = $(MODFLAGS) *************** *** 349,353 **** CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE) ! CFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -fno-common \ -ffreestanding --- 351,355 ---- CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE) ! CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -fno-common \ -ffreestanding *************** *** 368,380 **** export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions - # The temporary file to save gcc -MD generated dependencies must not - # contain a comma - comma := , - depfile = $(subst $(comma),_,$(@D)/.$(@F).d) - # Files to ignore in find ... statements ! RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS -o -name .pc \) -prune -o ! RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS --exclude .pc # =========================================================================== --- 370,377 ---- export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions # Files to ignore in find ... statements ! RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS -o -name .pc -o -name .hg \) -prune -o ! export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS --exclude .pc --exclude .hg # =========================================================================== *************** *** 386,389 **** --- 383,389 ---- $(Q)$(MAKE) $(build)=scripts/basic + # To avoid any implicit rule to kick in, define an empty command. + scripts/basic/%: scripts_basic ; + .PHONY: outputmakefile # outputmakefile generate a Makefile to be placed in output directory, if *************** *** 448,454 **** export KBUILD_DEFCONFIG ! config: scripts_basic outputmakefile FORCE ! $(Q)$(MAKE) $(build)=scripts/kconfig $@ ! %config: scripts_basic outputmakefile FORCE $(Q)$(MAKE) $(build)=scripts/kconfig $@ --- 448,453 ---- export KBUILD_DEFCONFIG ! config %config: scripts_basic outputmakefile FORCE ! $(Q)mkdir -p include/linux $(Q)$(MAKE) $(build)=scripts/kconfig $@ *************** *** 494,497 **** --- 493,497 ---- # with it and forgot to run make oldconfig include/linux/autoconf.h: .config + $(Q)mkdir -p include/linux $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig else *************** *** 520,524 **** ifdef CONFIG_FRAME_POINTER ! CFLAGS += -fno-omit-frame-pointer else CFLAGS += -fomit-frame-pointer --- 520,524 ---- ifdef CONFIG_FRAME_POINTER ! CFLAGS += -fno-omit-frame-pointer $(call cc-option,-fno-optimize-sibling-calls,) else CFLAGS += -fomit-frame-pointer *************** *** 553,556 **** --- 553,576 ---- export INSTALL_PATH ?= /boot + # If CONFIG_LOCALVERSION_AUTO is set, we automatically perform some tests + # and try to determine if the current source tree is a release tree, of any sort, + # or if is a pure development tree. + # + # A 'release tree' is any tree with a git TAG associated + # with it. The primary goal of this is to make it safe for a native + # git/CVS/SVN user to build a release tree (i.e, 2.6.9) and also to + # continue developing against the current Linus tree, without having the Linus + # tree overwrite the 2.6.9 tree when installed. + # + # Currently, only git is supported. + # Other SCMs can edit scripts/setlocalversion and add the appropriate + # checks as needed. + + + ifdef CONFIG_LOCALVERSION_AUTO + localversion-auto := $(shell $(PERL) $(srctree)/scripts/setlocalversion $(srctree)) + LOCALVERSION := $(LOCALVERSION)$(localversion-auto) + endif + # # INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory *************** *** 629,634 **** quiet_cmd_vmlinux_version = GEN .version cmd_vmlinux_version = set -e; \ ! . $(srctree)/scripts/mkversion > .tmp_version; \ ! mv -f .tmp_version .version; \ $(MAKE) $(build)=init --- 649,659 ---- quiet_cmd_vmlinux_version = GEN .version cmd_vmlinux_version = set -e; \ ! if [ ! -r .version ]; then \ ! rm -f .version; \ ! echo 1 >.version; \ ! else \ ! mv .version .old_version; \ ! expr 0$$(cat .old_version) + 1 >.version; \ ! fi; \ $(MAKE) $(build)=init *************** *** 640,645 **** # If CONFIG_KALLSYMS is set .version is already updated # Generate System.map and verify that the content is consistent ! define rule_vmlinux__ $(if $(CONFIG_KALLSYMS),,+$(call cmd,vmlinux_version)) --- 665,672 ---- # If CONFIG_KALLSYMS is set .version is already updated # Generate System.map and verify that the content is consistent ! # Use + in front of the vmlinux_version rule to silent warning with make -j2 ! # First command is ':' to allow us to use + in front of the rule define rule_vmlinux__ + : $(if $(CONFIG_KALLSYMS),,+$(call cmd,vmlinux_version)) *************** *** 696,701 **** --- 723,730 ---- # Update vmlinux version before link # Use + in front of this rule to silent warning about make -j1 + # First command is ':' to allow us to use + in front of this rule cmd_ksym_ld = $(cmd_vmlinux__) define rule_ksym_ld + : +$(call cmd,vmlinux_version) $(call cmd,vmlinux__) *************** *** 727,730 **** --- 756,769 ---- $(KALLSYMS): scripts ; + # Generate some data for debugging strange kallsyms problems + debug_kallsyms: .tmp_map$(last_kallsyms) + + .tmp_map%: .tmp_vmlinux% FORCE + ($(OBJDUMP) -h $< | $(AWK) '/^ +[0-9]/{print $$4 " 0 " $$2}'; $(NM) $<) | sort > $@ + + .tmp_map3: .tmp_map2 + + .tmp_map2: .tmp_map1 + endif # ifdef CONFIG_KALLSYMS *************** *** 732,735 **** --- 771,775 ---- vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE $(call if_changed_rule,vmlinux__) + $(Q)rm -f .old_version # The actual objects are generated when descending, *************** *** 744,766 **** .PHONY: $(vmlinux-dirs) ! $(vmlinux-dirs): prepare-all scripts $(Q)$(MAKE) $(build)=$@ # Things we need to do before we recursively start building the kernel ! # or the modules are listed in "prepare-all". ! # A multi level approach is used. prepare1 is updated first, then prepare0. ! # prepare-all is the collection point for the prepare targets. ! .PHONY: prepare-all prepare prepare0 prepare1 prepare2 ! # prepare2 is used to check if we are building in a separate output directory, # and if so do: # 1) Check that make has not been executed in the kernel src $(srctree) # 2) Create the include2 directory, used for the second asm symlink ! prepare2: ifneq ($(KBUILD_SRC),) @echo ' Using $(srctree) as source for kernel' ! $(Q)if [ -h $(srctree)/include/asm -o -f $(srctree)/.config ]; then \ echo " $(srctree) is not clean, please run 'make mrproper'";\ echo " in the '$(srctree)' directory.";\ --- 784,811 ---- .PHONY: $(vmlinux-dirs) ! $(vmlinux-dirs): prepare scripts $(Q)$(MAKE) $(build)=$@ # Things we need to do before we recursively start building the kernel ! # or the modules are listed in "prepare". ! # A multi level approach is used. prepareN is processed before prepareN-1. ! # archprepare is used in arch Makefiles and when processed asm symlink, ! # version.h and scripts_basic is processed / created. ! ! # Listed in dependency order ! .PHONY: prepare archprepare prepare0 prepare1 prepare2 prepare3 ! # prepare-all is deprecated, use prepare as valid replacement ! .PHONY: prepare-all ! # prepare3 is used to check if we are building in a separate output directory, # and if so do: # 1) Check that make has not been executed in the kernel src $(srctree) # 2) Create the include2 directory, used for the second asm symlink ! prepare3: ifneq ($(KBUILD_SRC),) @echo ' Using $(srctree) as source for kernel' ! $(Q)if [ -f $(srctree)/.config ]; then \ echo " $(srctree) is not clean, please run 'make mrproper'";\ echo " in the '$(srctree)' directory.";\ *************** *** 771,778 **** endif ! # prepare1 creates a makefile if using a separate output directory ! prepare1: prepare2 outputmakefile ! prepare0: prepare1 include/linux/version.h include/asm include/config/MARKER ifneq ($(KBUILD_MODULES),) $(Q)rm -rf $(MODVERDIR) --- 816,824 ---- endif ! # prepare2 creates a makefile if using a separate output directory ! prepare2: prepare3 outputmakefile ! prepare1: prepare2 include/linux/version.h include/asm \ ! include/config/MARKER ifneq ($(KBUILD_MODULES),) $(Q)rm -rf $(MODVERDIR) *************** *** 780,785 **** endif # All the preparing.. ! prepare-all: prepare0 prepare # Leave this as default for preprocessing vmlinux.lds.S, which is now --- 826,836 ---- endif + archprepare: prepare1 scripts_basic + + prepare0: archprepare FORCE + $(Q)$(MAKE) $(build)=. + # All the preparing.. ! prepare prepare-all: prepare0 # Leave this as default for preprocessing vmlinux.lds.S, which is now *************** *** 797,800 **** --- 848,854 ---- %.o: %.c scripts FORCE $(Q)$(MAKE) $(build)=$(@D) $@ + %.ko: scripts FORCE + $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) $(build)=$(@D) $(@:.ko=.o) + $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost %/: scripts prepare FORCE $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) $(build)=$(@D) *************** *** 817,821 **** # Split autoconf.h into include/linux/config/* ! include/config/MARKER: include/linux/autoconf.h @echo ' SPLIT include/linux/autoconf.h -> include/config/*' @scripts/basic/split-include include/linux/autoconf.h include/config --- 871,875 ---- # Split autoconf.h into include/linux/config/* ! include/config/MARKER: scripts/basic/split-include include/linux/autoconf.h @echo ' SPLIT include/linux/autoconf.h -> include/config/*' @scripts/basic/split-include include/linux/autoconf.h include/config *************** *** 869,873 **** # Target to prepare building external modules .PHONY: modules_prepare ! modules_prepare: prepare-all scripts # Target to install modules --- 923,927 ---- # Target to prepare building external modules .PHONY: modules_prepare ! modules_prepare: prepare scripts # Target to install modules *************** *** 877,881 **** .PHONY: _modinst_ _modinst_: ! @if [ -z "`$(DEPMOD) -V | grep module-init-tools`" ]; then \ echo "Warning: you may need to install module-init-tools"; \ echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\ --- 931,935 ---- .PHONY: _modinst_ _modinst_: ! @if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \ echo "Warning: you may need to install module-init-tools"; \ echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\ *************** *** 921,944 **** endif # CONFIG_MODULES - # Generate asm-offsets.h - # --------------------------------------------------------------------------- - - define filechk_gen-asm-offsets - (set -e; \ - echo "#ifndef __ASM_OFFSETS_H__"; \ - echo "#define __ASM_OFFSETS_H__"; \ - echo "/*"; \ - echo " * DO NOT MODIFY."; \ - echo " *"; \ - echo " * This file was generated by arch/$(ARCH)/Makefile"; \ - echo " *"; \ - echo " */"; \ - echo ""; \ - sed -ne "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"; \ - echo ""; \ - echo "#endif" ) - endef - - ### # Cleaning is done on three levels. --- 975,978 ---- *************** *** 963,967 **** clean: rm-dirs := $(CLEAN_DIRS) clean: rm-files := $(CLEAN_FILES) ! clean-dirs := $(addprefix _clean_,$(vmlinux-alldirs)) .PHONY: $(clean-dirs) clean archclean --- 997,1001 ---- clean: rm-dirs := $(CLEAN_DIRS) clean: rm-files := $(CLEAN_FILES) ! clean-dirs := $(addprefix _clean_,$(srctree) $(vmlinux-alldirs)) .PHONY: $(clean-dirs) clean archclean *************** *** 1038,1044 **** --- 1072,1080 ---- @echo ' dir/ - Build all files in dir and below' @echo ' dir/file.[ois] - Build specified target only' + @echo ' dir/file.ko - Build module including final link' @echo ' rpm - Build a kernel as an RPM package' @echo ' tags/TAGS - Generate tags file for editors' @echo ' cscope - Generate cscope index' + @echo ' kernelrelease - Output the release version string' @echo '' @echo 'Static analysers' *************** *** 1154,1158 **** #Adding $(srctree) adds about 20M on i386 to the size of the output file! ! ifeq ($(KBUILD_OUTPUT),) __srctree = else --- 1190,1194 ---- #Adding $(srctree) adds about 20M on i386 to the size of the output file! ! ifeq ($(src),$(obj)) __srctree = else *************** *** 1160,1169 **** endif define all-sources ( find $(__srctree) $(RCS_FIND_IGNORE) \ \( -name include -o -name arch \) -prune -o \ -name '*.[chS]' -print; \ ! find $(__srctree)arch/$(ARCH) $(RCS_FIND_IGNORE) \ ! -name '*.[chS]' -print; \ find $(__srctree)security/selinux/include $(RCS_FIND_IGNORE) \ -name '*.[chS]' -print; \ --- 1196,1209 ---- endif + ALLSOURCE_ARCHS := $(ARCH) + define all-sources ( find $(__srctree) $(RCS_FIND_IGNORE) \ \( -name include -o -name arch \) -prune -o \ -name '*.[chS]' -print; \ ! for ARCH in $(ALLSOURCE_ARCHS) ; do \ ! find $(__srctree)arch/$${ARCH} $(RCS_FIND_IGNORE) \ ! -name '*.[chS]' -print; \ ! done ; \ find $(__srctree)security/selinux/include $(RCS_FIND_IGNORE) \ -name '*.[chS]' -print; \ *************** *** 1171,1176 **** \( -name config -o -name 'asm-*' \) -prune \ -o -name '*.[chS]' -print; \ ! find $(__srctree)include/asm-$(ARCH) $(RCS_FIND_IGNORE) \ ! -name '*.[chS]' -print; \ find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \ -name '*.[chS]' -print ) --- 1211,1218 ---- \( -name config -o -name 'asm-*' \) -prune \ -o -name '*.[chS]' -print; \ ! for ARCH in $(ALLSOURCE_ARCHS) ; do \ ! find $(__srctree)include/asm-$${ARCH} $(RCS_FIND_IGNORE) \ ! -name '*.[chS]' -print; \ ! done ; \ find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \ -name '*.[chS]' -print ) *************** *** 1178,1185 **** quiet_cmd_cscope-file = FILELST cscope.files ! cmd_cscope-file = $(all-sources) > cscope.files quiet_cmd_cscope = MAKE cscope.out ! cmd_cscope = cscope -k -b -q cscope: FORCE --- 1220,1227 ---- quiet_cmd_cscope-file = FILELST cscope.files ! cmd_cscope-file = (echo \-k; echo \-q; $(all-sources)) > cscope.files quiet_cmd_cscope = MAKE cscope.out ! cmd_cscope = cscope -b cscope: FORCE *************** *** 1188,1194 **** quiet_cmd_TAGS = MAKE $@ ! cmd_TAGS = $(all-sources) | etags - - # Exuberant ctags works better with -I quiet_cmd_tags = MAKE $@ --- 1230,1242 ---- quiet_cmd_TAGS = MAKE $@ ! define cmd_TAGS ! rm -f $@; \ ! ETAGSF=`etags --version | grep -i exuberant >/dev/null && echo "-I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_GPL --extra=+f"`; \ ! $(all-sources) | xargs etags $$ETAGSF -a ! endef ! ! TAGS: FORCE ! $(call cmd,TAGS) quiet_cmd_tags = MAKE $@ *************** *** 1199,1205 **** endef - TAGS: FORCE - $(call cmd,TAGS) - tags: FORCE $(call cmd,tags) --- 1247,1250 ---- *************** *** 1269,1338 **** endif - # Execute command and generate cmd file - if_changed = $(if $(strip $? \ - $(filter-out $(cmd_$(1)),$(cmd_$@))\ - $(filter-out $(cmd_$@),$(cmd_$(1)))),\ - @set -e; \ - $(if $($(quiet)cmd_$(1)),echo ' $(subst ','\'',$($(quiet)cmd_$(1)))';) \ - $(cmd_$(1)); \ - echo 'cmd_$@ := $(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).cmd) - - - # execute the command and also postprocess generated .d dependencies - # file - if_changed_dep = $(if $(strip $? $(filter-out FORCE $(wildcard $^),$^)\ - $(filter-out $(cmd_$(1)),$(cmd_$@))\ - $(filter-out $(cmd_$@),$(cmd_$(1)))),\ - $(Q)set -e; \ - $(if $($(quiet)cmd_$(1)),echo ' $(subst ','\'',$($(quiet)cmd_$(1)))';) \ - $(cmd_$(1)); \ - scripts/basic/fixdep $(depfile) $@ '$(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).tmp; \ - rm -f $(depfile); \ - mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd) - - # Usage: $(call if_changed_rule,foo) - # will check if $(cmd_foo) changed, or any of the prequisites changed, - # and if so will execute $(rule_foo) - - if_changed_rule = $(if $(strip $? \ - $(filter-out $(cmd_$(1)),$(cmd_$(@F)))\ - $(filter-out $(cmd_$(@F)),$(cmd_$(1)))),\ - $(Q)$(rule_$(1))) - - # If quiet is set, only print short version of command - - cmd = @$(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))' &&) $(cmd_$(1)) - - # filechk is used to check if the content of a generated file is updated. - # Sample usage: - # define filechk_sample - # echo $KERNELRELEASE - # endef - # version.h : Makefile - # $(call filechk,sample) - # The rule defined shall write to stdout the content of the new file. - # The existing file will be compared with the new one. - # - If no file exist it is created - # - If the content differ the new file is used - # - If they are equal no change, and no timestamp update - - define filechk - @set -e; \ - echo ' CHK $@'; \ - mkdir -p $(dir $@); \ - $(filechk_$(1)) < $< > $@.tmp; \ - if [ -r $@ ] && cmp -s $@ $@.tmp; then \ - rm -f $@.tmp; \ - else \ - echo ' UPD $@'; \ - mv -f $@.tmp $@; \ - fi - endef - - # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=dir - # Usage: - # $(Q)$(MAKE) $(build)=dir - build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj - # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir # Usage: --- 1314,1317 ---- *************** *** 1340,1348 **** clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj - # $(call descend,<dir>,<target>) - # Recursively call a sub-make in <dir> with target <target> - # Usage is deprecated, because make does not see this as an invocation of make. - descend =$(Q)$(MAKE) -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj=$(1) $(2) - endif # skip-makefile --- 1319,1322 ---- |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:39
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/include/asm-i386 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/include/asm-i386 Modified Files: elf.h unistd.h Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: elf.h =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/include/asm-i386/elf.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** elf.h 23 Jan 2006 22:55:45 -0000 1.2 --- elf.h 24 Jan 2006 04:40:17 -0000 1.3 *************** *** 10,13 **** --- 10,14 ---- #include <asm/processor.h> #include <asm/system.h> /* for savesegment */ + #include <asm/auxvec.h> #include <linux/utsname.h> *************** *** 110,120 **** #define ELF_PLATFORM (system_utsname.machine) - /* - * Architecture-neutral AT_ values in 0-17, leave some room - * for more of them, start the x86-specific ones at 32. - */ - #define AT_SYSINFO 32 - #define AT_SYSINFO_EHDR 33 - #ifdef __KERNEL__ --- 111,114 ---- Index: unistd.h =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/include/asm-i386/unistd.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** unistd.h 24 Jan 2006 00:28:19 -0000 1.3 --- unistd.h 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 257,261 **** #define __NR_io_cancel 249 #define __NR_fadvise64 250 ! #define __NR_exit_group 252 #define __NR_lookup_dcookie 253 --- 257,261 ---- #define __NR_io_cancel 249 #define __NR_fadvise64 250 ! #define __NR_set_zone_reclaim 251 #define __NR_exit_group 252 #define __NR_lookup_dcookie 253 *************** *** 295,300 **** #define __NR_request_key 287 #define __NR_keyctl 288 ! #define NR_syscalls 289 /* --- 295,305 ---- #define __NR_request_key 287 #define __NR_keyctl 288 + #define __NR_ioprio_set 289 + #define __NR_ioprio_get 290 + #define __NR_inotify_init 291 + #define __NR_inotify_add_watch 292 + #define __NR_inotify_rm_watch 293 ! #define NR_syscalls 294 /* *************** *** 328,332 **** __asm__ volatile ("int $0x80" \ : "=a" (__res) \ ! : "0" (__NR_##name),"b" ((long)(arg1))); \ __syscall_return(type,__res); \ } --- 333,337 ---- __asm__ volatile ("int $0x80" \ : "=a" (__res) \ ! : "0" (__NR_##name),"b" ((long)(arg1)) : "memory"); \ __syscall_return(type,__res); \ } *************** *** 338,342 **** __asm__ volatile ("int $0x80" \ : "=a" (__res) \ ! : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \ __syscall_return(type,__res); \ } --- 343,347 ---- __asm__ volatile ("int $0x80" \ : "=a" (__res) \ ! : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)) : "memory"); \ __syscall_return(type,__res); \ } *************** *** 349,353 **** : "=a" (__res) \ : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ ! "d" ((long)(arg3))); \ __syscall_return(type,__res); \ } --- 354,358 ---- : "=a" (__res) \ : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ ! "d" ((long)(arg3)) : "memory"); \ __syscall_return(type,__res); \ } *************** *** 360,364 **** : "=a" (__res) \ : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ ! "d" ((long)(arg3)),"S" ((long)(arg4))); \ __syscall_return(type,__res); \ } --- 365,369 ---- : "=a" (__res) \ : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ ! "d" ((long)(arg3)),"S" ((long)(arg4)) : "memory"); \ __syscall_return(type,__res); \ } *************** *** 372,376 **** : "=a" (__res) \ : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ ! "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5))); \ __syscall_return(type,__res); \ } --- 377,381 ---- : "=a" (__res) \ : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ ! "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5)) : "memory"); \ __syscall_return(type,__res); \ } *************** *** 385,389 **** : "i" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5)), \ ! "0" ((long)(arg6))); \ __syscall_return(type,__res); \ } --- 390,394 ---- : "i" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5)), \ ! "0" ((long)(arg6)) : "memory"); \ __syscall_return(type,__res); \ } |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:39
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/arch/parisc/kernel In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/arch/parisc/kernel Modified Files: signal.c Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: signal.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/arch/parisc/kernel/signal.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** signal.c 24 Jan 2006 00:28:19 -0000 1.3 --- signal.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 33,37 **** #include <asm/pgalloc.h> #include <asm/cacheflush.h> ! #include <asm/offsets.h> #ifdef CONFIG_COMPAT --- 33,37 ---- #include <asm/pgalloc.h> #include <asm/cacheflush.h> ! #include <asm/asm-offsets.h> #ifdef CONFIG_COMPAT *************** *** 154,158 **** struct compat_rt_sigframe __user * compat_frame; ! if(is_cur_personality_id(PERID_LINUX32)) sigframe_size = PARISC_RT_SIGFRAME_SIZE32; #endif --- 154,158 ---- struct compat_rt_sigframe __user * compat_frame; ! if(personality(current->personality) == PER_LINUX32) sigframe_size = PARISC_RT_SIGFRAME_SIZE32; #endif *************** *** 167,171 **** compat_frame = (struct compat_rt_sigframe __user *)frame; ! if(is_cur_personality_id(PERID_LINUX32)){ DBG(2,"sys_rt_sigreturn: ELF32 process.\n"); if (__copy_from_user(&compat_set, &compat_frame->uc.uc_sigmask, sizeof(compat_set))) --- 167,171 ---- compat_frame = (struct compat_rt_sigframe __user *)frame; ! if(personality(current->personality) == PER_LINUX32){ DBG(2,"sys_rt_sigreturn: ELF32 process.\n"); if (__copy_from_user(&compat_set, &compat_frame->uc.uc_sigmask, sizeof(compat_set))) *************** *** 317,321 **** compat_frame = (struct compat_rt_sigframe __user *)frame; ! if(is_personality_id(PERID_LINUX32)) { DBG(1,"setup_rt_frame: frame->info = 0x%p\n", &compat_frame->info); err |= compat_copy_siginfo_to_user(&compat_frame->info, info); --- 317,321 ---- compat_frame = (struct compat_rt_sigframe __user *)frame; ! if(personality(current->personality) == PER_LINUX32) { DBG(1,"setup_rt_frame: frame->info = 0x%p\n", &compat_frame->info); err |= compat_copy_siginfo_to_user(&compat_frame->info, info); *************** *** 441,445 **** unsigned long psw = USER_PSW; #ifdef __LP64__ ! if(is_cur_personality_id(PERID_LINUX)) psw |= PSW_W; #endif --- 441,445 ---- unsigned long psw = USER_PSW; #ifdef __LP64__ ! if(is_cur_personality_id(PERID_LINUX)) psw |= PSW_W; #endif *************** *** 518,528 **** return 0; ! if (!(ka->sa.sa_flags & SA_NODEFER)) { ! spin_lock_irq(¤t->sighand->siglock); ! sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask); sigaddset(¤t->blocked,sig); ! recalc_sigpending(); ! spin_unlock_irq(¤t->sighand->siglock); ! } return 1; } --- 518,527 ---- return 0; ! spin_lock_irq(¤t->sighand->siglock); ! sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask); ! if (!(ka->sa.sa_flags & SA_NODEFER)) sigaddset(¤t->blocked,sig); ! recalc_sigpending(); ! spin_unlock_irq(¤t->sighand->siglock); return 1; } |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:39
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/arch/x86_64/ia32 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/arch/x86_64/ia32 Modified Files: sys_ia32.c Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: sys_ia32.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/arch/x86_64/ia32/sys_ia32.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** sys_ia32.c 24 Jan 2006 00:28:19 -0000 1.3 --- sys_ia32.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 62,65 **** --- 62,66 ---- #include <linux/highuid.h> #include <linux/vmalloc.h> + #include <linux/fsnotify.h> #include <asm/mman.h> #include <asm/types.h> *************** *** 754,758 **** set_fs(old_fs); ! if (!ret && offset && put_user(of, offset)) return -EFAULT; --- 755,759 ---- set_fs(old_fs); ! if (offset && put_user(of, offset)) return -EFAULT; *************** *** 972,999 **** } - asmlinkage long sys32_open(const char __user * filename, int flags, int mode) - { - char * tmp; - int fd, error; - - /* don't force O_LARGEFILE */ - tmp = getname(filename); - fd = PTR_ERR(tmp); - if (!IS_ERR(tmp)) { - fd = get_unused_fd(); - if (fd >= 0) { - struct file *f = filp_open(tmp, flags, mode); - error = PTR_ERR(f); - if (IS_ERR(f)) { - put_unused_fd(fd); - fd = error; - } else - fd_install(fd, f); - } - putname(tmp); - } - return fd; - } - extern asmlinkage long sys_timer_create(clockid_t which_clock, --- 973,976 ---- |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:39
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/include/asm-parisc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/include/asm-parisc Modified Files: processor.h Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: processor.h =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/include/asm-parisc/processor.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** processor.h 23 Jan 2006 22:55:45 -0000 1.2 --- processor.h 24 Jan 2006 04:40:17 -0000 1.3 *************** *** 12,15 **** --- 12,16 ---- #include <linux/config.h> #include <linux/threads.h> + #include <linux/spinlock_types.h> #include <asm/hardware.h> |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:39
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/abi/sco In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/abi/sco Modified Files: misc.c ptrace.c Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: misc.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/abi/sco/misc.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** misc.c 23 Jan 2006 22:55:45 -0000 1.2 --- misc.c 24 Jan 2006 04:40:17 -0000 1.3 *************** *** 36,39 **** --- 36,40 ---- + int sco_lseek(int fd, u_long offset, int whence) *************** *** 66,74 **** if (fd == -1 && cmd == 8) { struct files_struct *files = current->files; int rval; /* compare to ./fs/open.c: get_unused_fd */ spin_lock(&files->file_lock); ! rval = find_first_zero_bit(files->open_fds->fds_bits, files->max_fdset); spin_unlock(&files->file_lock); --- 67,77 ---- if (fd == -1 && cmd == 8) { struct files_struct *files = current->files; + struct fdtable *fdt; int rval; /* compare to ./fs/open.c: get_unused_fd */ spin_lock(&files->file_lock); ! fdt = files_fdtable(files); ! rval = find_first_zero_bit(fdt->open_fds->fds_bits, fdt->max_fdset); spin_unlock(&files->file_lock); Index: ptrace.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/abi/sco/ptrace.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** ptrace.c 24 Jan 2006 00:28:19 -0000 1.2 --- ptrace.c 24 Jan 2006 04:40:17 -0000 1.3 *************** *** 21,26 **** #include <linux/ptrace.h> - asmlinkage int sys_ptrace(long request, long pid, long addr, long data); - #include <asm/uaccess.h> --- 21,24 ---- |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:39
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/include/linux In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/include/linux Modified Files: fs.h major.h personality.h Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: fs.h =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/include/linux/fs.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** fs.h 24 Jan 2006 00:28:19 -0000 1.3 --- fs.h 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 10,13 **** --- 10,14 ---- #include <linux/limits.h> #include <linux/ioctl.h> + #include <linux/rcuref.h> /* *************** *** 70,73 **** --- 71,75 ---- #define WRITE 1 #define READA 2 /* read-ahead - don't block if no resources */ + #define SWRITE 3 /* for ll_rw_block() - wait for buffer lock */ #define SPECIAL 4 /* For non-blockdevice requests in request queue */ #define READ_SYNC (READ | (1 << BIO_RW_SYNC)) *************** *** 214,217 **** --- 216,220 ---- #include <linux/prio_tree.h> #include <linux/init.h> + #include <linux/sched.h> #include <asm/atomic.h> *************** *** 221,224 **** --- 224,228 ---- struct iovec; struct nameidata; + struct kiocb; struct pipe_inode_info; struct poll_table_struct; *************** *** 241,245 **** unsigned long max_blocks, struct buffer_head *bh_result, int create); ! typedef void (dio_iodone_t)(struct inode *inode, loff_t offset, ssize_t bytes, void *private); --- 245,249 ---- unsigned long max_blocks, struct buffer_head *bh_result, int create); ! typedef void (dio_iodone_t)(struct kiocb *iocb, loff_t offset, ssize_t bytes, void *private); *************** *** 280,296 **** struct timespec ia_mtime; struct timespec ia_ctime; - unsigned int ia_attr_flags; }; /* - * This is the inode attributes flag definitions - */ - #define ATTR_FLAG_SYNCRONOUS 1 /* Syncronous write */ - #define ATTR_FLAG_NOATIME 2 /* Don't update atime */ - #define ATTR_FLAG_APPEND 4 /* Append-only file */ - #define ATTR_FLAG_IMMUTABLE 8 /* Immutable file */ - #define ATTR_FLAG_NODIRATIME 16 /* Don't update atime for directory */ - - /* * Includes for diskquotas. */ --- 284,290 ---- *************** *** 303,307 **** struct address_space; struct writeback_control; - struct kiocb; struct address_space_operations { --- 297,300 ---- *************** *** 331,334 **** --- 324,329 ---- ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov, loff_t offset, unsigned long nr_segs); + struct page* (*get_xip_page)(struct address_space *, sector_t, + int); }; *************** *** 472,475 **** --- 467,475 ---- #endif + #ifdef CONFIG_INOTIFY + struct list_head inotify_watches; /* watches on this inode */ + struct semaphore inotify_sem; /* protects the watches list */ + #endif + unsigned long i_state; unsigned long dirtied_when; /* jiffies of first dirtying */ *************** *** 582,586 **** unsigned int f_flags; mode_t f_mode; - int f_error; loff_t f_pos; struct fown_struct f_owner; --- 582,585 ---- *************** *** 588,592 **** struct file_ra_state f_ra; - size_t f_maxcount; unsigned long f_version; void *f_security; --- 587,590 ---- *************** *** 601,604 **** --- 599,603 ---- #endif /* #ifdef CONFIG_EPOLL */ struct address_space *f_mapping; + struct rcu_head f_rcuhead; }; extern spinlock_t files_lock; *************** *** 606,610 **** #define file_list_unlock() spin_unlock(&files_lock); ! #define get_file(x) atomic_inc(&(x)->f_count) #define file_count(x) atomic_read(&(x)->f_count) --- 605,609 ---- #define file_list_unlock() spin_unlock(&files_lock); ! #define get_file(x) rcuref_inc(&(x)->f_count) #define file_count(x) atomic_read(&(x)->f_count) *************** *** 675,678 **** --- 674,678 ---- union { struct nfs_lock_info nfs_fl; + struct nfs4_lock_info nfs4_fl; } fl_u; }; *************** *** 690,698 **** extern int fcntl_getlk(struct file *, struct flock __user *); ! extern int fcntl_setlk(struct file *, unsigned int, struct flock __user *); #if BITS_PER_LONG == 32 extern int fcntl_getlk64(struct file *, struct flock64 __user *); ! extern int fcntl_setlk64(struct file *, unsigned int, struct flock64 __user *); #endif --- 690,700 ---- extern int fcntl_getlk(struct file *, struct flock __user *); ! extern int fcntl_setlk(unsigned int, struct file *, unsigned int, ! struct flock __user *); #if BITS_PER_LONG == 32 extern int fcntl_getlk64(struct file *, struct flock64 __user *); ! extern int fcntl_setlk64(unsigned int, struct file *, unsigned int, ! struct flock64 __user *); #endif *************** *** 821,824 **** --- 823,842 ---- wait_event((sb)->s_wait_unfrozen, ((sb)->s_frozen < (level))) + static inline void get_fs_excl(void) + { + atomic_inc(¤t->fs_excl); + } + + static inline void put_fs_excl(void) + { + atomic_dec(¤t->fs_excl); + } + + static inline int has_fs_excl(void) + { + return atomic_read(¤t->fs_excl); + } + + /* * Superblock locking. *************** *** 826,829 **** --- 844,848 ---- static inline void lock_super(struct super_block * sb) { + get_fs_excl(); down(&sb->s_lock); } *************** *** 831,834 **** --- 850,854 ---- static inline void unlock_super(struct super_block * sb) { + put_fs_excl(); up(&sb->s_lock); } *************** *** 884,888 **** --- 904,910 ---- int (*release) (struct inode *, struct file *); int (*ioctl) (struct inode *, struct file *, unsigned, unsigned long); + long (*unlocked_ioctl) (struct file *, unsigned, unsigned long); long (*compat_ioctl) (struct file *, unsigned, unsigned long); + int (*direct_access) (struct block_device *, sector_t, unsigned long *); int (*media_changed) (struct gendisk *); int (*revalidate_disk) (struct gendisk *); *************** *** 964,969 **** struct inode *, struct dentry *); int (*readlink) (struct dentry *, char __user *,int); ! int (*follow_link) (struct dentry *, struct nameidata *); ! void (*put_link) (struct dentry *, struct nameidata *); void (*truncate) (struct inode *); int (*permission) (struct inode *, int, struct nameidata *); --- 986,991 ---- struct inode *, struct dentry *); int (*readlink) (struct dentry *, char __user *,int); ! void * (*follow_link) (struct dentry *, struct nameidata *); ! void (*put_link) (struct dentry *, struct nameidata *, void *); void (*truncate) (struct inode *); int (*permission) (struct inode *, int, struct nameidata *); *************** *** 1025,1028 **** --- 1047,1051 ---- #define I_CLEAR 32 #define I_NEW 64 + #define I_WILL_FREE 128 #define I_DIRTY (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES) *************** *** 1261,1264 **** --- 1284,1288 ---- extern int do_truncate(struct dentry *, loff_t start); + extern long do_sys_open(const char __user *filename, int flags, int mode); extern struct file *filp_open(const char *, int, int); extern struct file * dentry_open(struct dentry *, struct vfsmount *, int); *************** *** 1370,1374 **** void *data, int force); extern sector_t bmap(struct inode *, sector_t); - extern int setattr_mask(unsigned int); extern int notify_change(struct dentry *, struct iattr *); extern int permission(struct inode *, int, struct nameidata *); --- 1394,1397 ---- *************** *** 1412,1416 **** --- 1435,1443 ---- extern int inode_needs_sync(struct inode *inode); extern void generic_delete_inode(struct inode *inode); + extern void generic_drop_inode(struct inode *inode); + extern struct inode *ilookup5_nowait(struct super_block *sb, + unsigned long hashval, int (*test)(struct inode *, void *), + void *data); extern struct inode *ilookup5(struct super_block *sb, unsigned long hashval, int (*test)(struct inode *, void *), void *data); *************** *** 1483,1488 **** extern void file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping); - extern ssize_t generic_file_direct_IO(int rw, struct kiocb *iocb, - const struct iovec *iov, loff_t offset, unsigned long nr_segs); extern ssize_t generic_file_readv(struct file *filp, const struct iovec *iov, unsigned long nr_segs, loff_t *ppos); --- 1510,1513 ---- *************** *** 1495,1498 **** --- 1520,1540 ---- extern int nonseekable_open(struct inode * inode, struct file * filp); + #ifdef CONFIG_FS_XIP + extern ssize_t xip_file_read(struct file *filp, char __user *buf, size_t len, + loff_t *ppos); + extern ssize_t xip_file_sendfile(struct file *in_file, loff_t *ppos, + size_t count, read_actor_t actor, + void *target); + extern int xip_file_mmap(struct file * file, struct vm_area_struct * vma); + extern ssize_t xip_file_write(struct file *filp, const char __user *buf, + size_t len, loff_t *ppos); + extern int xip_truncate_page(struct address_space *mapping, loff_t from); + #else + static inline int xip_truncate_page(struct address_space *mapping, loff_t from) + { + return 0; + } + #endif + static inline void do_generic_file_read(struct file * filp, loff_t *ppos, read_descriptor_t * desc, *************** *** 1552,1557 **** extern int vfs_follow_link(struct nameidata *, const char *); extern int page_readlink(struct dentry *, char __user *, int); ! extern int page_follow_link_light(struct dentry *, struct nameidata *); ! extern void page_put_link(struct dentry *, struct nameidata *); extern int page_symlink(struct inode *inode, const char *symname, int len); extern struct inode_operations page_symlink_inode_operations; --- 1594,1599 ---- extern int vfs_follow_link(struct nameidata *, const char *); extern int page_readlink(struct dentry *, char __user *, int); ! extern void *page_follow_link_light(struct dentry *, struct nameidata *); ! extern void page_put_link(struct dentry *, struct nameidata *, void *); extern int page_symlink(struct inode *inode, const char *symname, int len); extern struct inode_operations page_symlink_inode_operations; *************** *** 1670,1673 **** --- 1712,1761 ---- } + /* + * simple attribute files + * + * These attributes behave similar to those in sysfs: + * + * Writing to an attribute immediately sets a value, an open file can be + * written to multiple times. + * + * Reading from an attribute creates a buffer from the value that might get + * read with multiple read calls. When the attribute has been read + * completely, no further read calls are possible until the file is opened + * again. + * + * All attributes contain a text representation of a numeric value + * that are accessed with the get() and set() functions. + */ + #define DEFINE_SIMPLE_ATTRIBUTE(__fops, __get, __set, __fmt) \ + static int __fops ## _open(struct inode *inode, struct file *file) \ + { \ + __simple_attr_check_format(__fmt, 0ull); \ + return simple_attr_open(inode, file, __get, __set, __fmt); \ + } \ + static struct file_operations __fops = { \ + .owner = THIS_MODULE, \ + .open = __fops ## _open, \ + .release = simple_attr_close, \ + .read = simple_attr_read, \ + .write = simple_attr_write, \ + }; + + static inline void __attribute__((format(printf, 1, 2))) + __simple_attr_check_format(const char *fmt, ...) + { + /* don't do anything, just let the compiler check the arguments; */ + } + + int simple_attr_open(struct inode *inode, struct file *file, + u64 (*get)(void *), void (*set)(void *, u64), + const char *fmt); + int simple_attr_close(struct inode *inode, struct file *file); + ssize_t simple_attr_read(struct file *file, char __user *buf, + size_t len, loff_t *ppos); + ssize_t simple_attr_write(struct file *file, const char __user *buf, + size_t len, loff_t *ppos); + + #ifdef CONFIG_SECURITY static inline char *alloc_secdata(void) Index: major.h =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/include/linux/major.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** major.h 24 Jan 2006 00:28:19 -0000 1.2 --- major.h 24 Jan 2006 04:40:17 -0000 1.3 *************** *** 102,105 **** --- 102,106 ---- #define SHMIQ_MAJOR 85 /* Linux/mips, SGI /dev/shmiq */ + #define SCSI_CHANGER_MAJOR 86 #define IDE6_MAJOR 88 Index: personality.h =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/include/linux/personality.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** personality.h 24 Jan 2006 00:28:19 -0000 1.3 --- personality.h 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 14,19 **** extern int register_exec_domain(struct exec_domain *); extern int unregister_exec_domain(struct exec_domain *); ! extern int __set_personality(personality_t); ! /* --- 14,18 ---- extern int register_exec_domain(struct exec_domain *); extern int unregister_exec_domain(struct exec_domain *); ! extern int __set_personality(unsigned long); /* *************** *** 52,56 **** PERID_MASK = 0xff, }; ! /* * Flags for customizing the behaviour of a base personality id. --- 51,55 ---- PERID_MASK = 0xff, }; ! /* * Flags for customizing the behaviour of a base personality id. *************** *** 60,65 **** */ enum { ADDR_NO_RANDOMIZE = 0x0040000, /* disable randomization of VA space */ - #if 1 /* only for compatibilty with old code */ FDPIC_FUNCPTRS = 0x0080000, /* userspace function ptrs point to descriptors * (signal handling) --- 59,64 ---- */ enum { + #if 1 /* only for compatibilty with old code */ ADDR_NO_RANDOMIZE = 0x0040000, /* disable randomization of VA space */ FDPIC_FUNCPTRS = 0x0080000, /* userspace function ptrs point to descriptors * (signal handling) *************** *** 71,87 **** SHORT_INODE = 0x1000000, WHOLE_SECONDS = 0x2000000, ! STICKY_TIMEOUTS = 0x4000000, ADDR_LIMIT_3GB = 0x8000000, #endif /* ffffffpp */ ! PERF_MMAP_PAGE_ZERO = 0x00100000, ! PERF_ADDR_COMPAT_LAYOUT = 0x00200000, ! PERF_READ_IMPLIES_EXEC = 0x00400000, ! PERF_ADDR_LIMIT_32BIT = 0x00800000, ! PERF_SHORT_INODE = 0x01000000, ! PERF_WHOLE_SECONDS = 0x02000000, ! PERF_STICKY_TIMEOUTS = 0x04000000, ! PERF_ADDR_LIMIT_3GB = 0x08000000, ! PERF_MASK = 0xFFFFFF00, }; --- 70,86 ---- SHORT_INODE = 0x1000000, WHOLE_SECONDS = 0x2000000, ! STICKY_TIMEOUTS = 0x4000000, ADDR_LIMIT_3GB = 0x8000000, #endif /* ffffffpp */ ! PERF_MMAP_PAGE_ZERO = 0x00100000, ! PERF_ADDR_COMPAT_LAYOUT = 0x00200000, ! PERF_READ_IMPLIES_EXEC = 0x00400000, ! PERF_ADDR_LIMIT_32BIT = 0x00800000, ! PERF_SHORT_INODE = 0x01000000, ! PERF_WHOLE_SECONDS = 0x02000000, ! PERF_STICKY_TIMEOUTS = 0x04000000, ! PERF_ADDR_LIMIT_3GB = 0x08000000, ! PERF_MASK = 0xFFFFFF00, }; *************** *** 101,105 **** PER_SVR3 = PERID_SVR3 | PERF_STICKY_TIMEOUTS | PERF_SHORT_INODE, PER_SCOSVR3 = PERID_SCOSVR3 | PERF_STICKY_TIMEOUTS | ! PERF_WHOLE_SECONDS | PERF_SHORT_INODE, PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS, PER_OSR5 = PERID_SCOSVR3 | PERF_STICKY_TIMEOUTS | PERF_WHOLE_SECONDS, --- 100,104 ---- PER_SVR3 = PERID_SVR3 | PERF_STICKY_TIMEOUTS | PERF_SHORT_INODE, PER_SCOSVR3 = PERID_SCOSVR3 | PERF_STICKY_TIMEOUTS | ! PERF_WHOLE_SECONDS | PERF_SHORT_INODE, PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS, PER_OSR5 = PERID_SCOSVR3 | PERF_STICKY_TIMEOUTS | PERF_WHOLE_SECONDS, *************** *** 135,141 **** const char *name; /* name of the execdomain */ handler_t handler; /* handler for syscalls */ ! per_id_t pers_low; /* lowest personality id for this execdomain */ ! per_id_t pers_high; /* highest personality id for this execdomain */ ! unsigned long *signal_map; /* signal mapping */ unsigned long *signal_invmap; /* reverse signal mapping */ struct map_segment *err_map; /* error mapping */ --- 134,140 ---- const char *name; /* name of the execdomain */ handler_t handler; /* handler for syscalls */ ! per_id_t pers_low; /* lowest personality id for this execdomain */ ! per_id_t pers_high; /* highest personality id for this execdomain */ ! unsigned long *signal_map; /* signal mapping */ unsigned long *signal_invmap; /* reverse signal mapping */ struct map_segment *err_map; /* error mapping */ *************** *** 162,176 **** * Personality of the currently running process. */ ! #define get_cur_personality() (current->personality) /* * Return the base personality id of current process. */ ! #define get_cur_personality_id() get_personality_id(get_cur_personality()) /* * Return the flags of the personality of current process. */ ! #define get_cur_personality_flags() get_personality_flags(get_cur_personality()) /* --- 161,175 ---- * Personality of the currently running process. */ ! #define get_cur_personality() (current->personality) /* * Return the base personality id of current process. */ ! #define get_cur_personality_id() get_personality_id(get_cur_personality()) /* * Return the flags of the personality of current process. */ ! #define get_cur_personality_flags() get_personality_flags(get_cur_personality()) /* |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:33
|
Update of /cvsroot/linux-abi/linux-abi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468 Added Files: AGAINST-2.6.14 Removed Files: AGAINST-2.6.12 Log Message: linux-26: patch to 2.6.14, incl. audit syscalls --- NEW FILE --- --- AGAINST-2.6.12 DELETED --- |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:33
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/arch/ia64/ia32 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/arch/ia64/ia32 Modified Files: ia32priv.h Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: ia32priv.h =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/arch/ia64/ia32/ia32priv.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** ia32priv.h 24 Jan 2006 00:28:19 -0000 1.3 --- ia32priv.h 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 242,246 **** /* POSIX.1b timers */ struct { ! timer_t _tid; /* timer id */ int _overrun; /* overrun count */ char _pad[sizeof(unsigned int) - sizeof(int)]; --- 242,246 ---- /* POSIX.1b timers */ struct { ! compat_timer_t _tid; /* timer id */ int _overrun; /* overrun count */ char _pad[sizeof(unsigned int) - sizeof(int)]; |
From: Fred W. <fw...@us...> - 2006-01-24 04:40:33
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/abi/cxenix In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2468/linux-26/abi/cxenix Modified Files: signal.c Log Message: linux-26: patch to 2.6.14, incl. audit syscalls Index: signal.c =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/abi/cxenix/signal.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** signal.c 24 Jan 2006 00:28:19 -0000 1.3 --- signal.c 24 Jan 2006 04:40:17 -0000 1.4 *************** *** 9,17 **** #include <asm/uaccess.h> - asmlinkage long sys_rt_sigaction(int sig, - const struct sigaction __user *act, - struct sigaction __user *oact, - size_t sigsetsize); - #include <abi/cxenix/signal.h> #include <abi/signal.h> --- 9,12 ---- |
From: Fred W. <fw...@us...> - 2006-01-24 03:34:53
|
Update of /cvsroot/linux-abi/linux-abi/linux-26/Documentation/abi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13863/abi Modified Files: ChangeLog Log Message: Changelog updated Index: ChangeLog =================================================================== RCS file: /cvsroot/linux-abi/linux-abi/linux-26/Documentation/abi/ChangeLog,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** ChangeLog 23 Jan 2006 22:53:14 -0000 1.1 --- ChangeLog 24 Jan 2006 03:34:45 -0000 1.2 *************** *** 1,5 **** 2002-01-03 Christoph Hellwig <hc...@ca...> ! linux-abi2.4.17.0 * rework/cleanup lcall7 syscall handling --- 1,13 ---- + 2006-01-23 Frederic Wenzel <fr...@os...> + + linux-abi-2.6.15 + + * brought sourceforge linux-abi tree up to date + * included various patches out of the sf.net patch area + * credits to all of the contributors there. + 2002-01-03 Christoph Hellwig <hc...@ca...> ! linux-abi-2.4.17.0 * rework/cleanup lcall7 syscall handling |
From: Oscar O. <cfe...@gm...> - 2005-07-26 16:08:56
|
Hi to all the Linux abi users and developers, I'm gonna explain what i did. I probe the next Linux-abi patches version 2.4.18 for red hat 8 and 2.4.20 for red hat 9, the compilation is the respective kernels was done. and all the modules work. Now I'm trying to do the same for new version of kernel (2.4.21 up to and 2.6.11) trying to use red hat enterprise server 3 and 4, the compilation in these is done,the load of modules into the kernel is OK, but when i probe to execute LIANT RM-COBOL for SCO server 5, it says that there's a segmentation fault. My question is: why in the version 2.4.18 and 2.4.20 everything works OK and in the newer versions i have problems???? can somebody explain me that? I have the software (LIANT RM-COBOL for SCO server 5 ) available for test if somebody want it. Atte Oscar Olalde |
From: Dirk W. <dw...@pi...> - 2003-01-30 14:01:42
|
confirm 941251 |