Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
e58d2eb0
Commit
e58d2eb0
authored
Oct 14, 2004
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge pobox.com:/spare/repo/linux-2.6
into pobox.com:/spare/repo/libata-2.6
parents
5c6f34a7
8b5915b0
Changes
57
Hide whitespace changes
Inline
Side-by-side
Showing
57 changed files
with
286 additions
and
340 deletions
+286
-340
arch/h8300/kernel/ptrace.c
arch/h8300/kernel/ptrace.c
+1
-1
arch/h8300/lib/checksum.c
arch/h8300/lib/checksum.c
+1
-0
arch/h8300/platform/h8300h/generic/timer.c
arch/h8300/platform/h8300h/generic/timer.c
+2
-2
arch/ia64/kernel/fsys.S
arch/ia64/kernel/fsys.S
+2
-2
arch/m32r/kernel/entry.S
arch/m32r/kernel/entry.S
+2
-10
arch/m32r/kernel/sys_m32r.c
arch/m32r/kernel/sys_m32r.c
+2
-61
arch/ppc64/mm/hash_low.S
arch/ppc64/mm/hash_low.S
+1
-1
arch/um/Kconfig
arch/um/Kconfig
+5
-2
arch/um/Kconfig_block
arch/um/Kconfig_block
+1
-0
arch/um/Kconfig_char
arch/um/Kconfig_char
+4
-0
arch/um/Kconfig_net
arch/um/Kconfig_net
+1
-1
arch/um/Makefile
arch/um/Makefile
+55
-77
arch/um/Makefile-i386
arch/um/Makefile-i386
+11
-18
arch/um/Makefile-skas
arch/um/Makefile-skas
+3
-6
arch/um/Makefile-tt
arch/um/Makefile-tt
+1
-2
arch/um/drivers/chan_kern.c
arch/um/drivers/chan_kern.c
+2
-0
arch/um/drivers/ubd_kern.c
arch/um/drivers/ubd_kern.c
+16
-9
arch/um/include/Makefile
arch/um/include/Makefile
+0
-7
arch/um/include/sysdep-i386/checksum.h
arch/um/include/sysdep-i386/checksum.h
+2
-1
arch/um/kernel/Makefile
arch/um/kernel/Makefile
+4
-16
arch/um/kernel/irq.c
arch/um/kernel/irq.c
+2
-0
arch/um/kernel/ksyms.c
arch/um/kernel/ksyms.c
+1
-0
arch/um/kernel/physmem.c
arch/um/kernel/physmem.c
+7
-2
arch/um/kernel/skas/Makefile
arch/um/kernel/skas/Makefile
+2
-14
arch/um/kernel/skas/util/Makefile
arch/um/kernel/skas/util/Makefile
+2
-9
arch/um/kernel/time_kern.c
arch/um/kernel/time_kern.c
+3
-1
arch/um/kernel/vmlinux.lds.S
arch/um/kernel/vmlinux.lds.S
+0
-11
arch/um/sys-i386/Makefile
arch/um/sys-i386/Makefile
+4
-1
arch/um/sys-i386/util/Makefile
arch/um/sys-i386/util/Makefile
+0
-5
drivers/input/serio/parkbd.c
drivers/input/serio/parkbd.c
+1
-0
drivers/mtd/maps/lubbock-flash.c
drivers/mtd/maps/lubbock-flash.c
+5
-5
drivers/pci/probe.c
drivers/pci/probe.c
+4
-1
drivers/video/cyber2000fb.c
drivers/video/cyber2000fb.c
+2
-2
fs/proc/array.c
fs/proc/array.c
+5
-1
fs/xfs/linux-2.6/xfs_ioctl.c
fs/xfs/linux-2.6/xfs_ioctl.c
+4
-2
fs/xfs/linux-2.6/xfs_super.c
fs/xfs/linux-2.6/xfs_super.c
+13
-6
fs/xfs/linux-2.6/xfs_vfs.h
fs/xfs/linux-2.6/xfs_vfs.h
+4
-0
fs/xfs/xfs_fsops.c
fs/xfs/xfs_fsops.c
+1
-4
fs/xfs/xfs_log.c
fs/xfs/xfs_log.c
+1
-1
fs/xfs/xfs_trans.c
fs/xfs/xfs_trans.c
+1
-1
include/asm-generic/pgtable.h
include/asm-generic/pgtable.h
+8
-0
include/asm-h8300/bitops.h
include/asm-h8300/bitops.h
+2
-0
include/asm-i386/pgtable-3level.h
include/asm-i386/pgtable-3level.h
+1
-0
include/asm-m32r/unistd.h
include/asm-m32r/unistd.h
+3
-12
include/asm-um/dma-mapping.h
include/asm-um/dma-mapping.h
+2
-0
include/asm-um/smp.h
include/asm-um/smp.h
+0
-6
include/linux/acct.h
include/linux/acct.h
+15
-8
include/linux/highmem.h
include/linux/highmem.h
+4
-0
include/linux/sched.h
include/linux/sched.h
+1
-1
include/linux/times.h
include/linux/times.h
+20
-0
kernel/acct.c
kernel/acct.c
+9
-1
kernel/fork.c
kernel/fork.c
+3
-2
kernel/posix-timers.c
kernel/posix-timers.c
+0
-5
mm/oom_kill.c
mm/oom_kill.c
+13
-6
mm/page-writeback.c
mm/page-writeback.c
+3
-5
net/sunrpc/svcauth.c
net/sunrpc/svcauth.c
+3
-1
security/selinux/hooks.c
security/selinux/hooks.c
+21
-11
No files found.
arch/h8300/kernel/ptrace.c
View file @
e58d2eb0
...
...
@@ -107,7 +107,7 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
/* read the word at location addr in the USER area. */
case
PTRACE_PEEKUSR
:
{
unsigned
long
tmp
;
unsigned
long
tmp
=
0
;
if
((
addr
&
3
)
||
addr
<
0
||
addr
>=
sizeof
(
struct
user
))
{
ret
=
-
EIO
;
...
...
arch/h8300/lib/checksum.c
View file @
e58d2eb0
...
...
@@ -32,6 +32,7 @@
of the assembly has to go. */
#include <net/checksum.h>
#include <linux/module.h>
static
inline
unsigned
short
from32to16
(
unsigned
long
x
)
{
...
...
arch/h8300/platform/h8300h/generic/timer.c
View file @
e58d2eb0
...
...
@@ -32,7 +32,7 @@
#define H8300_TIMER_FREQ CONFIG_CPU_CLOCK*1000/8192
/* Timer input freq. */
in
t
platform_timer_setup
(
irqreturn_t
(
*
timer_int
)(
int
,
void
*
,
struct
pt_regs
*
))
void
__ini
t
platform_timer_setup
(
irqreturn_t
(
*
timer_int
)(
int
,
void
*
,
struct
pt_regs
*
))
{
/* setup 8bit timer ch2 */
ctrl_outb
(
H8300_TIMER_FREQ
/
HZ
,
TCORA2
);
/* set interval */
...
...
@@ -69,7 +69,7 @@ void platform_timer_eoi(void)
#define H8300_TIMER_FREQ CONFIG_CPU_CLOCK*1000/8
/* Timer input freq. */
in
t
platform_timer_setup
(
irqreturn_t
(
*
timer_int
)(
int
,
void
*
,
struct
pt_regs
*
))
void
__ini
t
platform_timer_setup
(
irqreturn_t
(
*
timer_int
)(
int
,
void
*
,
struct
pt_regs
*
))
{
*
(
unsigned
short
*
)
GRA
=
H8300_TIMER_FREQ
/
HZ
;
/* set interval */
*
(
unsigned
short
*
)
TCNT
=
0
;
/* clear counter */
...
...
arch/ia64/kernel/fsys.S
View file @
e58d2eb0
...
...
@@ -234,7 +234,7 @@ ENTRY(fsys_gettimeofday)
cmp.eq
p9
,
p0
=
1
,
r8
//
MMIO64
?
extr
r2
=
r21
,
24
,
8
//
time_interpolator
->
jitter
cmp.eq
p10
,
p0
=
2
,
r8
//
MMIO32
?
cmp.lt
p11
,
p0
=
2
,
r8
//
function
?
cmp.lt
u
p11
,
p0
=
2
,
r8
//
function
or
other
clock
(
p11
)
br.cond.spnt.many
fsys_fallback_syscall
;;
setf.sig
f7
=
r3
//
Setup
for
scaling
of
counter
...
...
@@ -338,7 +338,7 @@ ENTRY(fsys_clock_gettime)
.
prologue
.
altrp
b6
.
body
cmp4.lt
p6
,
p0
=
CLOCK_MONOTONIC
,
r32
cmp4.lt
u
p6
,
p0
=
CLOCK_MONOTONIC
,
r32
//
Fallback
if
this
is
not
CLOCK_REALTIME
or
CLOCK_MONOTONIC
(
p6
)
br.spnt.few
fsys_fallback_syscall
mov
r31
=
r33
...
...
arch/m32r/kernel/entry.S
View file @
e58d2eb0
...
...
@@ -3,6 +3,7 @@
*
*
Copyright
(
c
)
2001
,
2002
Hirokazu
Takata
,
Hitoshi
Yamamoto
,
H
.
Kondo
*
Copyright
(
c
)
2003
Hitoshi
Yamamoto
*
Copyright
(
c
)
2004
Hirokazu
Takata
<
takata
at
linux
-
m32r
.
org
>
*
*
Taken
from
i386
version
.
*
Copyright
(
C
)
1991
,
1992
Linus
Torvalds
...
...
@@ -798,7 +799,7 @@ ENTRY(sys_call_table)
.
long
sys_swapon
.
long
sys_reboot
.
long
old_readdir
.
long
old_mmap
/*
90
*/
.
long
sys_ni_syscall
/*
90
-
old_mmap
syscall
holder
*/
.
long
sys_munmap
.
long
sys_truncate
.
long
sys_ftruncate
...
...
@@ -993,15 +994,6 @@ ENTRY(sys_call_table)
.
long
sys_mq_getsetattr
.
long
sys_ni_syscall
/*
reserved
for
kexec
*/
.
long
sys_waitid
.
long
sys_perfctr_info
.
long
sys_vperfctr_open
.
long
sys_vperfctr_control
.
long
sys_vperfctr_unlink
.
long
sys_vperfctr_iresume
.
long
sys_vperfctr_read
/*
290
*/
.
long
sys_add_key
.
long
sys_request_key
.
long
sys_keyctl
syscall_table_size
=(.-
sys_call_table
)
arch/m32r/kernel/sys_m32r.c
View file @
e58d2eb0
...
...
@@ -7,8 +7,6 @@
* Taken from i386 version.
*/
/* $Id$ */
#include <linux/config.h>
#include <linux/errno.h>
#include <linux/sched.h>
...
...
@@ -88,10 +86,9 @@ sys_pipe(unsigned long r0, unsigned long r1, unsigned long r2,
return
error
;
}
static
inline
long
do_mmap2
(
unsigned
long
addr
,
unsigned
long
len
,
asmlinkage
long
sys_mmap2
(
unsigned
long
addr
,
unsigned
long
len
,
unsigned
long
prot
,
unsigned
long
flags
,
int
fd
,
unsigned
long
pgoff
)
unsigned
long
fd
,
unsigned
long
pgoff
)
{
int
error
=
-
EBADF
;
struct
file
*
file
=
NULL
;
...
...
@@ -113,62 +110,6 @@ static inline long do_mmap2(
return
error
;
}
asmlinkage
long
sys_mmap2
(
unsigned
long
addr
,
unsigned
long
len
,
unsigned
long
prot
,
unsigned
long
flags
,
unsigned
long
fd
,
unsigned
long
pgoff
)
{
return
do_mmap2
(
addr
,
len
,
prot
,
flags
,
fd
,
pgoff
);
}
/*
* Perform the select(nd, in, out, ex, tv) and mmap() system
* calls. Linux/M32R didn't use to be able to handle more than
* 4 system call parameters, so these system calls used a memory
* block for parameter passing..
*/
struct
mmap_arg_struct
{
unsigned
long
addr
;
unsigned
long
len
;
unsigned
long
prot
;
unsigned
long
flags
;
unsigned
long
fd
;
unsigned
long
offset
;
};
asmlinkage
int
old_mmap
(
struct
mmap_arg_struct
*
arg
)
{
struct
mmap_arg_struct
a
;
int
err
=
-
EFAULT
;
if
(
copy_from_user
(
&
a
,
arg
,
sizeof
(
a
)))
goto
out
;
err
=
-
EINVAL
;
if
(
a
.
offset
&
~
PAGE_MASK
)
goto
out
;
err
=
do_mmap2
(
a
.
addr
,
a
.
len
,
a
.
prot
,
a
.
flags
,
a
.
fd
,
a
.
offset
>>
PAGE_SHIFT
);
out:
return
err
;
}
struct
sel_arg_struct
{
unsigned
long
n
;
fd_set
__user
*
inp
,
*
outp
,
*
exp
;
struct
timeval
__user
*
tvp
;
};
asmlinkage
int
old_select
(
struct
sel_arg_struct
__user
*
arg
)
{
struct
sel_arg_struct
a
;
if
(
copy_from_user
(
&
a
,
arg
,
sizeof
(
a
)))
return
-
EFAULT
;
/* sys_select() does the appropriate kernel locking */
return
sys_select
(
a
.
n
,
a
.
inp
,
a
.
outp
,
a
.
exp
,
a
.
tvp
);
}
/*
* sys_ipc() is the de-multiplexer for the SysV IPC calls..
*
...
...
arch/ppc64/mm/hash_low.S
View file @
e58d2eb0
...
...
@@ -263,7 +263,7 @@ _GLOBAL(htab_call_hpte_updatepp)
/
*
if
we
failed
because
typically
the
HPTE
wasn
't really here
*
we
try
an
insertion
.
*/
cmpi
0
,
r3
,-
1
cmp
d
i
0
,
r3
,-
1
beq
-
htab_insert_pte
/
*
Clear
the
BUSY
bit
and
Write
out
the
PTE
*/
...
...
arch/um/Kconfig
View file @
e58d2eb0
...
...
@@ -143,7 +143,6 @@ config SMP
will appear to be running simultaneously. If the host is a
multiprocessor, then UML processes may run simultaneously, depending
on the host scheduler.
CONFIG_SMP will be set to whatever this option is set to.
It is safe to leave this unchanged.
config NR_CPUS
...
...
@@ -179,6 +178,7 @@ config KERNEL_HALF_GIGS
config HIGHMEM
bool "Highmem support"
depends on BROKEN
config KERNEL_STACK_ORDER
int "Kernel stack size order"
...
...
@@ -226,6 +226,7 @@ source "crypto/Kconfig"
source "lib/Kconfig"
menu "SCSI support"
depends on BROKEN
config SCSI
tristate "SCSI support"
...
...
@@ -242,6 +243,8 @@ endmenu
source "drivers/md/Kconfig"
source "drivers/mtd/Kconfig"
if BROKEN
source "drivers/mtd/Kconfig"
endif
source "arch/um/Kconfig.debug"
arch/um/Kconfig_block
View file @
e58d2eb0
...
...
@@ -54,6 +54,7 @@ config BLK_DEV_INITRD
config MMAPPER
tristate "Example IO memory driver"
depends on BROKEN
help
The User-Mode Linux port can provide support for IO Memory
emulation with this option. This allows a host file to be
...
...
arch/um/Kconfig_char
View file @
e58d2eb0
...
...
@@ -72,6 +72,10 @@ config XTERM_CHAN
well, since UML's gdb currently requires an xterm.
It is safe to say 'Y' here.
config NOCONFIG_CHAN
bool
default !(XTERM_CHAN && TTY_CHAN && PTY_CHAN && PORT_CHAN && FD_CHAN && NULL_CHAN)
config CON_ZERO_CHAN
string "Default main console channel initialization"
default "fd:0,fd:1"
...
...
arch/um/Kconfig_net
View file @
e58d2eb0
...
...
@@ -135,7 +135,7 @@ config UML_NET_MCAST
config UML_NET_PCAP
bool "pcap transport"
depends on UML_NET
depends on UML_NET
&& BROKEN
help
The pcap transport makes a pcap packet stream on the host look
like an ethernet device inside UML. This is useful for making
...
...
arch/um/Makefile
View file @
e58d2eb0
...
...
@@ -5,20 +5,13 @@
ARCH_DIR
=
arch
/um
OS
:=
$(
shell
uname
-s
)
#We require it or things break.
SHELL
:=
/bin/bash
# Recalculate MODLIB to reflect the EXTRAVERSION changes (via KERNELRELEASE)
# The way the toplevel Makefile is written EXTRAVERSION is not supposed
# to be changed outside the toplevel Makefile, but recalculating MODLIB is
# a sufficient workaround until we no longer need architecture dependent
# EXTRAVERSION...
MODLIB
:=
$(INSTALL_MOD_PATH)
/lib/modules/
$(KERNELRELEASE)
ifeq
($(CONFIG_DEBUG_INFO),y)
CFLAGS
:=
$(
subst
-fomit-frame-pointer
,,
$(CFLAGS)
)
endif
filechk_gen_header
=
$<
core-y
+=
$(ARCH_DIR)
/kernel/
\
$(ARCH_DIR)
/drivers/
\
core-y
+=
$(ARCH_DIR)
/kernel/
\
$(ARCH_DIR)
/drivers/
\
$(ARCH_DIR)
/sys-
$(SUBARCH)
/
# Have to precede the include because the included Makefiles reference them.
...
...
@@ -31,13 +24,6 @@ ARCH_SYMLINKS = include/asm-um/arch $(ARCH_DIR)/include/sysdep $(ARCH_DIR)/os \
GEN_HEADERS
+=
$(ARCH_DIR)
/include/task.h
$(ARCH_DIR)
/include/kern_constants.h
# This target adds dependencies to "prepare". They are defined in the included
# Makefiles (see Makefile-i386).
.PHONY
:
sys_prepare
sys_prepare
:
@
:
MAKEFILE-$(CONFIG_MODE_TT)
+=
Makefile-tt
MAKEFILE-$(CONFIG_MODE_SKAS)
+=
Makefile-skas
...
...
@@ -45,11 +31,12 @@ ifneq ($(MAKEFILE-y),)
include
$(addprefix $(ARCH_DIR)/,$(MAKEFILE-y))
endif
ARCH_INCLUDE
:=
-I
$(ARCH_DIR)
/include
SYS_DIR
:=
$(ARCH_DIR)
/include/sysdep-
$(SUBARCH)
include
$(ARCH_DIR)/Makefile-$(SUBARCH)
include
$(ARCH_DIR)/Makefile-os-$(OS)
ARCH_INCLUDE
=
-I
$(ARCH_DIR)
/include
# -Derrno=kernel_errno - This turns all kernel references to errno into
# kernel_errno to separate them from the libc errno. This allows -fno-common
# in CFLAGS. Otherwise, it would cause ld to complain about the two different
...
...
@@ -59,7 +46,7 @@ CFLAGS += $(CFLAGS-y) -D__arch_um__ -DSUBARCH=\"$(SUBARCH)\" \
-D_LARGEFILE64_SOURCE
$(ARCH_INCLUDE)
-Derrno
=
kernel_errno
\
-Dsigprocmask
=
kernel_sigprocmask
$(MODE_INCLUDE)
CFLAGS
+=
$(
call
c
heck_gcc
,-fno-unit-at-a-time,
)
CFLAGS
+=
$(
call
c
c-option
,-fno-unit-at-a-time,
)
LINK_WRAPS
=
-Wl
,--wrap,malloc
-Wl
,--wrap,free
-Wl
,--wrap,calloc
...
...
@@ -72,23 +59,17 @@ CONFIG_KERNEL_HALF_GIGS ?= 0
SIZE
=
((
$(CONFIG_NEST_LEVEL)
+
$(CONFIG_KERNEL_HALF_GIGS)
)
*
0x20000000
)
ifeq
($(CONFIG_MODE_SKAS), y)
$(SYS_HEADERS)
:
$(
TOPDIR)/$(
ARCH_DIR)/include/skas_ptregs.h
$(SYS_HEADERS)
:
$(ARCH_DIR)/include/skas_ptregs.h
endif
include/linux/version.h
:
arch/$(ARCH)/Makefile
$(ARCH_DIR)/vmlinux.lds.S
:
touch
$@
prepare
:
$(ARCH_SYMLINKS) $(SYS_HEADERS) $(GEN_HEADERS)
LDFLAGS_vmlinux
=
-r
prepare
:
$(ARCH_SYMLINKS) $(SYS_HEADERS) $(GEN_HEADERS)
\
$(ARCH_DIR)/kernel/vmlinux.lds.S
# These aren't in Makefile-tt because they are needed in the !CONFIG_MODE_TT +
# CONFIG_MODE_SKAS + CONFIG_STATIC_LINK case.
LINK_TT
=
-static
LD_SCRIPT_TT
:=
uml.lds
LD_SCRIPT_TT
:=
uml.lds
.S
ifeq
($(CONFIG_STATIC_LINK),y)
LINK-y
+=
$(LINK_TT)
...
...
@@ -118,13 +99,14 @@ CPPFLAGS_vmlinux.lds = $(shell echo -U$(SUBARCH) \
-DELF_FORMAT
=
\"
$(ELF_FORMAT)
\"
$(CPP_MODE_TT)
\
-DKERNEL_STACK_SIZE
=
$(STACK_SIZE)
)
export
CPPFLAGS_$(LD_SCRIPT-y)
=
$(CPPFLAGS_vmlinux.lds)
-P
-C
-Uum
LD_SCRIPT-y
:=
$(ARCH_DIR)
/kernel/
$
(
LD_SCRIPT-y
)
linux
:
vmlinux $(LD_SCRIPT-y)
$(CC)
-Wl
,-T,
$
(
LD_SCRIPT-y
)
$
(
LINK-y
)
$(LINK_WRAPS)
\
-o
linux vmlinux
-L
/usr/lib
-lutil
CFLAGS_vmlinux
=
$
(
LINK-y
)
$(LINK_WRAPS)
define
cmd_vmlinux__
$(CC)
$(CFLAGS_vmlinux)
-o
$@
\
-Wl,-T,$(vmlinux-lds)
$(vmlinux-init)
\
-Wl,--start-group
$(vmlinux-main)
-Wl,--end-group
\
-L/usr/lib
-lutil
\
$(filter-out
$(vmlinux-lds)
$(vmlinux-init)
$(vmlinux-main)
FORCE
,$^)
endef
USER_CFLAGS
:=
$(
patsubst
-I
%,,
$(CFLAGS)
)
USER_CFLAGS
:=
$(
patsubst
-Derrno
=
kernel_errno,,
$(USER_CFLAGS)
)
...
...
@@ -135,76 +117,72 @@ USER_CFLAGS := $(patsubst -D__KERNEL__,,$(USER_CFLAGS)) $(ARCH_INCLUDE) \
# To get a definition of F_SETSIG
USER_CFLAGS
+=
-D_GNU_SOURCE
# From main Makefile, these options are set after including the ARCH makefile.
# So copy them here.
ifdef
CONFIG_CC_OPTIMIZE_FOR_SIZE
USER_CFLAGS
+=
-Os
else
USER_CFLAGS
+=
-O2
endif
ifndef
CONFIG_FRAME_POINTER
USER_CFLAGS
+=
-fomit-frame-pointer
endif
ifdef
CONFIG_DEBUG_INFO
USER_CFLAGS
+=
-g
endif
CLEAN_FILES
+=
linux x.i gmon.out
$(ARCH_DIR)
/uml.lds
\
$(ARCH_DIR)
/dyn_link.ld.s
$(ARCH_DIR)
/include/uml-config.h
\
$(GEN_HEADERS)
#When cleaning we don't include .config, so we don't include
#TT or skas makefiles and don't clean skas_ptregs.h.
CLEAN_FILES
+=
linux x.i gmon.out
$(ARCH_DIR)
/include/uml-config.h
\
$(GEN_HEADERS)
$(ARCH_DIR)
/include/skas_ptregs.h
MRPROPER_FILES
+=
$(SYMLINK_HEADERS)
$(ARCH_SYMLINKS)
\
$(
addprefix
$(ARCH_DIR)
/kernel/,
$(KERN_SYMLINKS)
)
$(
addprefix
$(ARCH_DIR)
/kernel/,
$(KERN_SYMLINKS)
)
$(ARCH_DIR)
/os
archmrproper
:
@
:
archclean
:
$(Q)$(MAKE)
$(clean)
=
$(ARCH_DIR)
/util
@
find
.
\(
-name
'*.bb'
-o
-name
'*.bbg'
-o
-name
'*.da'
\
-o
-name
'*.gcov'
\)
-type
f
-print
| xargs
rm
-f
#We need to re-preprocess this when the symlink dest changes.
#So we touch it.
$(ARCH_DIR)/kernel/vmlinux.lds.S
:
FORCE
@
echo
' SYMLINK $@'
$(Q)
ln
-sf
$
(
LD_SCRIPT-y
)
$@
$(Q)
touch
$@
$(SYMLINK_HEADERS)
:
cd
$(TOPDIR)
/
$(
dir
$@
)
;
\
@
echo
' SYMLINK $@'
$(Q)
cd
$(TOPDIR)
/
$(
dir
$@
)
;
\
ln
-sf
$(
basename
$(
notdir
$@
))
-
$(SUBARCH)
$(
suffix
$@
)
$(
notdir
$@
)
include/asm-um/arch
:
cd
$(TOPDIR)
/include/asm-um
&&
ln
-sf
../asm-
$(SUBARCH)
arch
@
echo
' SYMLINK $@'
$(Q)
cd
$(TOPDIR)
/include/asm-um
&&
ln
-sf
../asm-
$(SUBARCH)
arch
$(ARCH_DIR)/include/sysdep
:
cd
$(ARCH_DIR)
/include
&&
ln
-sf
sysdep-
$(SUBARCH)
sysdep
@
echo
' SYMLINK $@'
$(Q)
cd
$(ARCH_DIR)
/include
&&
ln
-sf
sysdep-
$(SUBARCH)
sysdep
$(ARCH_DIR)/os
:
cd
$(ARCH_DIR)
&&
ln
-sf
os-
$(OS)
os
@
echo
' SYMLINK $@'
$(Q)
cd
$(ARCH_DIR)
&&
ln
-sf
os-
$(OS)
os
# Generated files
define
filechk_umlconfig
sed
's/ CONFIG/ UML_CONFIG/'
endef
$(ARCH_DIR)/include/uml-config.h
:
$(TOPDIR)/
include/linux/autoconf.h
$(ARCH_DIR)/include/uml-config.h
:
include/linux/autoconf.h
$(
call
filechk,umlconfig
)
filechk_gen_header
=
$<
$(ARCH_DIR)/include/task.h
:
$(ARCH_DIR)/util/mk_task
$(
call
filechk,gen_header
)
$(ARCH_DIR)/include/
task.h
:
$(ARCH_DIR)/util/mk_task
$(ARCH_DIR)/include/
kern_constants.h
:
$(ARCH_DIR)/util/mk_constants
$(
call
filechk,gen_header
)
$(ARCH_DIR)/include/
kern_constants.h
:
$(ARCH_DIR)/util/mk_constant
s
$(ARCH_DIR)/include/
skas_ptregs.h
:
$(ARCH_DIR)/kernel/skas/util/mk_ptreg
s
$(
call
filechk,gen_header
)
$(ARCH_DIR)/util/mk_task $(ARCH_DIR)/util/mk_constants
:
$(ARCH_DIR)/util
\
sys_prepare
FORCE ;
$(ARCH_DIR)/util/mk_task $(ARCH_DIR)/util/mk_constants
:
$(ARCH_DIR)/util
\
FORCE ;
$(ARCH_DIR)/util
:
FORCE
$(Q)$(MAKE)
$(build)
=
$@
$(ARCH_DIR)/kernel/skas/util/mk_ptregs
:
$(ARCH_DIR)/kernel/skas/util FORCE ;
export
SUBARCH
USER_CFLAGS
OS
$(ARCH_DIR)/util
:
scripts_basic $(SYS_DIR)/sc.h FORCE
$(Q)$(MAKE)
$(build)
=
$@
all
:
linux
$(ARCH_DIR)/kernel/skas/util
:
scripts_basic FORCE
$(Q)$(MAKE)
$(build)
=
$@
define
archhelp
echo
'* linux - Binary kernel image (./linux)'
endef
export
SUBARCH
USER_CFLAGS
OS
arch/um/Makefile-i386
View file @
e58d2eb0
ifeq ($(CONFIG_HOST_2G_2G), y)
TOP_ADDR = 0x80000000
TOP_ADDR
:
= 0x80000000
else
TOP_ADDR = 0xc0000000
TOP_ADDR
:
= 0xc0000000
endif
ifeq ($(CONFIG_MODE_SKAS),y)
ifneq ($(CONFIG_MODE_TT),y)
START = 0x8048000
START
:
= 0x8048000
endif
endif
...
...
@@ -16,37 +16,30 @@ ifneq ($(CONFIG_GPROF),y)
ARCH_CFLAGS += -DUM_FASTCALL
endif
ELF_ARCH = $(SUBARCH)
ELF_FORMAT = elf32-$(SUBARCH)
ELF_ARCH
:
= $(SUBARCH)
ELF_FORMAT
:
= elf32-$(SUBARCH)
OBJCOPYFLAGS := -O binary -R .note -R .comment -S
SYS_DIR := $(ARCH_DIR)/include/sysdep-i386
SYS_UTIL_DIR := $(ARCH_DIR)/sys-i386/util
SYS_HEADERS = $(SYS_DIR)/sc.h $(SYS_DIR)/thread.h
sys_prepare: $(SYS_DIR)/sc.h
SYS_HEADERS := $(SYS_DIR)/sc.h $(SYS_DIR)/thread.h
prepare: $(SYS_HEADERS)
filechk_$(SYS_DIR)/sc.h := $(SYS_UTIL_DIR)/mk_sc
$(SYS_DIR)/sc.h: $(SYS_UTIL_DIR)/mk_sc
$(call filechk,$@)
filechk_$(SYS_DIR)/thread.h := $(SYS_UTIL_DIR)/mk_thread
$(call filechk,gen_header)
$(SYS_DIR)/thread.h: $(SYS_UTIL_DIR)/mk_thread
$(call filechk,
$@
)
$(call filechk,
gen_header
)
$(SYS_UTIL_DIR)/mk_sc: scripts
/basic/fixdep include/config/MARKER FORCE ;
$(SYS_UTIL_DIR)/mk_sc: scripts
_basic FORCE
$(Q)$(MAKE) $(build)=$(SYS_UTIL_DIR) $@
$(SYS_UTIL_DIR)/mk_thread:
$(ARCH_SYMLINKS) $(GEN_HEADERS) sys_prepare FORCE ;
$(SYS_UTIL_DIR)/mk_thread:
scripts_basic $(ARCH_SYMLINKS) $(GEN_HEADERS) FORCE
$(Q)$(MAKE) $(build)=$(SYS_UTIL_DIR) $@
$(SYS_UTIL_DIR): include/asm FORCE
$(SYS_UTIL_DIR):
scripts_basic
include/asm FORCE
$(Q)$(MAKE) $(build)=$(SYS_UTIL_DIR)
CLEAN_FILES += $(SYS_HEADERS)
arch/um/Makefile-skas
View file @
e58d2eb0
...
...
@@ -9,12 +9,9 @@ CFLAGS-$(CONFIG_GCOV) += -fprofile-arcs -ftest-coverage
CFLAGS-$(CONFIG_GPROF) += $(PROFILE)
LINK-$(CONFIG_GPROF) += $(PROFILE)
MODE_INCLUDE += -I$(
TOPDIR
)/$(ARCH_DIR)/kernel/skas/include
MODE_INCLUDE += -I$(
srctree
)/$(ARCH_DIR)/kernel/skas/include
LINK_SKAS = -Wl,-rpath,/lib
LD_SCRIPT_SKAS = dyn.lds
LD_SCRIPT_SKAS = dyn.lds
.S
GEN_HEADERS += $(TOPDIR)/$(ARCH_DIR)/include/skas_ptregs.h
$(TOPDIR)/$(ARCH_DIR)/include/skas_ptregs.h :
$(Q)$(MAKE) $(build)=$(ARCH_DIR)/kernel/skas $@
GEN_HEADERS += $(ARCH_DIR)/include/skas_ptregs.h
arch/um/Makefile-tt
View file @
e58d2eb0
...
...
@@ -3,5 +3,4 @@
# Licensed under the GPL
#
MODE_INCLUDE += -I$(TOPDIR)/$(ARCH_DIR)/kernel/tt/include
MODE_INCLUDE += -I$(srctree)/$(ARCH_DIR)/kernel/tt/include
arch/um/drivers/chan_kern.c
View file @
e58d2eb0
...
...
@@ -19,6 +19,7 @@
#include "line.h"
#include "os.h"
#ifdef CONFIG_NOCONFIG_CHAN
static
void
*
not_configged_init
(
char
*
str
,
int
device
,
struct
chan_opts
*
opts
)
{
printk
(
KERN_ERR
"Using a channel type which is configured out of "
...
...
@@ -87,6 +88,7 @@ static struct chan_ops not_configged_ops = {
.
free
=
not_configged_free
,
.
winch
=
0
,
};
#endif
/* CONFIG_NOCONFIG_CHAN */
void
generic_close
(
int
fd
,
void
*
unused
)
{
...
...
arch/um/drivers/ubd_kern.c
View file @
e58d2eb0
...
...
@@ -396,14 +396,13 @@ int thread_fd = -1;
*/
int
intr_count
=
0
;
static
void
ubd_finish
(
struct
request
*
req
,
int
error
)
/* call ubd_finish if you need to serialize */
static
void
__ubd_finish
(
struct
request
*
req
,
int
error
)
{
int
nsect
;
if
(
error
){
spin_lock
(
&
ubd_io_lock
);
end_request
(
req
,
0
);
spin_unlock
(
&
ubd_io_lock
);
return
;
}
nsect
=
req
->
current_nr_sectors
;
...
...
@@ -412,11 +411,17 @@ static void ubd_finish(struct request *req, int error)
req
->
errors
=
0
;
req
->
nr_sectors
-=
nsect
;
req
->
current_nr_sectors
=
0
;
spin_lock
(
&
ubd_io_lock
);
end_request
(
req
,
1
);
}
static
inline
void
ubd_finish
(
struct
request
*
req
,
int
error
)
{
spin_lock
(
&
ubd_io_lock
);
__ubd_finish
(
req
,
error
);
spin_unlock
(
&
ubd_io_lock
);
}
/* Called without ubd_io_lock held */
static
void
ubd_handler
(
void
)
{
struct
io_thread_req
req
;
...
...
@@ -768,9 +773,11 @@ int ubd_driver_init(void){
unsigned
long
stack
;
int
err
;
/* Set by CONFIG_BLK_DEV_UBD_SYNC or ubd=sync.*/
if
(
global_openflags
.
s
){
printk
(
KERN_INFO
"ubd : Synchronous mode
\n
"
);
return
(
0
);
printk
(
KERN_INFO
"ubd: Synchronous mode
\n
"
);
/* Letting ubd=sync be like using ubd#s= instead of ubd#= is
* enough. So use anyway the io thread. */
}
stack
=
alloc_stack
(
0
,
0
);
io_pid
=
start_io_thread
(
stack
+
PAGE_SIZE
-
sizeof
(
void
*
),
...
...
@@ -965,6 +972,7 @@ static int prepare_mmap_request(struct ubd *dev, int fd, __u64 offset,
return
(
0
);
}
/* Called with ubd_io_lock held */
static
int
prepare_request
(
struct
request
*
req
,
struct
io_thread_req
*
io_req
)
{
struct
gendisk
*
disk
=
req
->
rq_disk
;
...
...
@@ -977,9 +985,7 @@ static int prepare_request(struct request *req, struct io_thread_req *io_req)
if
((
rq_data_dir
(
req
)
==
WRITE
)
&&
!
dev
->
openflags
.
w
){
printk
(
"Write attempted on readonly ubd device %s
\n
"
,
disk
->
disk_name
);
spin_lock
(
&
ubd_io_lock
);
end_request
(
req
,
0
);
spin_unlock
(
&
ubd_io_lock
);
return
(
1
);
}
...
...
@@ -1029,6 +1035,7 @@ static int prepare_request(struct request *req, struct io_thread_req *io_req)
return
(
0
);
}
/* Called with ubd_io_lock held */
static
void
do_ubd_request
(
request_queue_t
*
q
)
{
struct
io_thread_req
io_req
;
...
...
@@ -1040,7 +1047,7 @@ static void do_ubd_request(request_queue_t *q)
err
=
prepare_request
(
req
,
&
io_req
);
if
(
!
err
){
do_io
(
&
io_req
);
ubd_finish
(
req
,
io_req
.
error
);
__
ubd_finish
(
req
,
io_req
.
error
);
}
}
}
...
...
arch/um/include/Makefile
deleted
100644 → 0
View file @
5c6f34a7
all
:
sc.h
sc.h
:
../util/mk_sc
../util/mk_sc
>
$@
../util/mk_sc
:
$(MAKE)
-C
../util mk_sc
arch/um/include/sysdep-i386/checksum.h
View file @
e58d2eb0
...
...
@@ -103,7 +103,8 @@ static inline unsigned short ip_fast_csum(unsigned char * iph,
are modified, we must also specify them as outputs, or gcc
will assume they contain their original values. */
:
"=r"
(
sum
),
"=r"
(
iph
),
"=r"
(
ihl
)
:
"1"
(
iph
),
"2"
(
ihl
));
:
"1"
(
iph
),
"2"
(
ihl
)
:
"memory"
);
return
(
sum
);
}
...
...
arch/um/kernel/Makefile
View file @
e58d2eb0
...
...
@@ -4,11 +4,7 @@
#
extra-y
:=
vmlinux.lds
# Descend into ../util for make clean. This is here because it doesn't work
# in arch/um/Makefile.
subdir-
=
../util
clean-files
:=
vmlinux.lds.S
obj-y
=
checksum.o config.o exec_kern.o exitcode.o frame_kern.o frame.o
\
helper.o init_task.o irq.o irq_user.o ksyms.o main.o mem.o mem_user.o
\
...
...
@@ -29,24 +25,16 @@ obj-$(CONFIG_MODE_SKAS) += skas/
user-objs-$(CONFIG_TTY_LOG)
+=
tty_log.o
USER_OBJS
:=
$(
filter
%_user.o,
$
(
obj-y
))
$
(
user-objs-y
)
config.o helper.o
\
main.o process.o tempfile.o time.o tty_log.o umid.o user_util.o
main.o process.o tempfile.o time.o tty_log.o umid.o user_util.o
frame.o
USER_OBJS
:=
$(
foreach
file,
$(USER_OBJS)
,
$(obj)
/
$(file)
)
CFLAGS_frame.o
:=
$(
patsubst
-fomit-frame-pointer
,,
$(USER_CFLAGS)
)
# This has to be separate because it needs be compiled with frame pointers
# regardless of how the rest of the kernel is built.
$(obj)/frame.o
:
$(src)/frame.c
$(CC)
$
(
CFLAGS_
$(
notdir
$@
)
)
-c
-o
$@
$<
CFLAGS_frame.o
:=
-fno-omit-frame-pointer
$(USER_OBJS)
:
%.o: %.c
$(CC)
$
(
CFLAGS_
$(
notdir
$@
)
)
$(USER_CFLAGS
)
-c
-o
$@
$<
$(CC)
$(
USER_CFLAGS)
$
(
CFLAGS_
$(
notdir
$@
)
)
-c
-o
$@
$<
QUOTE
=
'my $$config=`cat
$(TOPDIR)
/.config`; $$config =~ s/"/\\"/g ; $$config =~ s/\n/\\n"\n"/g ; while(<STDIN>) { $$_ =~ s/CONFIG/$$config/; print $$_ }'
$(obj)/config.o
:
$(obj)/config.c
quiet_cmd_quote
=
QUOTE
$@
cmd_quote
=
$(PERL)
-e
$(QUOTE)
<
$<
>
$@
...
...
arch/um/kernel/irq.c
View file @
e58d2eb0
...
...
@@ -441,6 +441,8 @@ int um_request_irq(unsigned int irq, int fd, int type,
err
=
activate_fd
(
irq
,
fd
,
type
,
dev_id
);
return
(
err
);
}
EXPORT_SYMBOL
(
um_request_irq
);
EXPORT_SYMBOL
(
reactivate_fd
);
/* this was setup_x86_irq but it seems pretty generic */
int
setup_irq
(
unsigned
int
irq
,
struct
irqaction
*
new
)
...
...
arch/um/kernel/ksyms.c
View file @
e58d2eb0
...
...
@@ -60,6 +60,7 @@ EXPORT_SYMBOL(strncpy_from_user_skas);
EXPORT_SYMBOL
(
copy_to_user_skas
);
EXPORT_SYMBOL
(
copy_from_user_skas
);
#endif
EXPORT_SYMBOL
(
uml_strdup
);
EXPORT_SYMBOL
(
os_stat_fd
);
EXPORT_SYMBOL
(
os_stat_file
);
...
...
arch/um/kernel/physmem.c
View file @
e58d2eb0
...
...
@@ -8,6 +8,7 @@
#include "linux/slab.h"
#include "linux/vmalloc.h"
#include "linux/bootmem.h"
#include "linux/module.h"
#include "asm/types.h"
#include "asm/pgtable.h"
#include "kern_util.h"
...
...
@@ -36,7 +37,7 @@ static struct rb_node **find_rb(void *virt)
struct
phys_desc
*
d
;
while
(
*
n
!=
NULL
){
d
=
rb_entry
(
n
,
struct
phys_desc
,
rb
);
d
=
rb_entry
(
*
n
,
struct
phys_desc
,
rb
);
if
(
d
->
virt
==
virt
)
return
(
n
);
...
...
@@ -56,7 +57,7 @@ static struct phys_desc *find_phys_mapping(void *virt)
if
(
*
n
==
NULL
)
return
(
NULL
);
return
(
rb_entry
(
n
,
struct
phys_desc
,
rb
));
return
(
rb_entry
(
*
n
,
struct
phys_desc
,
rb
));
}
static
void
insert_phys_mapping
(
struct
phys_desc
*
desc
)
...
...
@@ -220,6 +221,10 @@ void physmem_forget_descriptor(int fd)
kfree
(
desc
);
}
EXPORT_SYMBOL
(
physmem_forget_descriptor
);
EXPORT_SYMBOL
(
physmem_remove_mapping
);
EXPORT_SYMBOL
(
physmem_subst_mapping
);
void
arch_free_page
(
struct
page
*
page
,
int
order
)
{
void
*
virt
;
...
...
arch/um/kernel/skas/Makefile
View file @
e58d2eb0
...
...
@@ -3,26 +3,14 @@
# Licensed under the GPL
#
obj-y
=
exec_kern.o exec_user.o mem.o mem_user.o mmu.o process.o
\
obj-y
:
=
exec_kern.o exec_user.o mem.o mem_user.o mmu.o process.o
\
process_kern.o syscall_kern.o syscall_user.o time.o tlb.o trap_user.o
\
uaccess.o sys-
$(SUBARCH)
/
hostprogs-y
:=
util/mk_ptregs
clean-files
:=
include/skas_ptregs.h
subdir-y
:=
util
USER_OBJS
=
$(
filter
%_user.o,
$
(
obj-y
))
process.o time.o
USER_OBJS
:=
$(
foreach
file,
$(USER_OBJS)
,
$(obj)
/
$(file)
)
$(TOPDIR)/arch/um/include/skas_ptregs.h
:
$(src)/util/mk_ptregs
@
echo
-n
' Generating $@'
@
$<
>
$@
.tmp
@
if
[
-r
$@
]
&&
cmp
-s
$@
$@
.tmp
;
then
\
echo
' (unchanged)'
;
\
rm
-f
$@
.tmp
;
\
else
\
echo
' (updated)'
;
\
mv
-f
$@
.tmp
$@
;
\
fi
$(USER_OBJS)
:
%.o: %.c
$(CC)
$
(
CFLAGS_
$(
notdir
$@
)
)
$(USER_CFLAGS)
-c
-o
$@
$<
arch/um/kernel/skas/util/Makefile
View file @
e58d2eb0
all
:
mk_ptregs
mk_ptregs
:
mk_ptregs.o
$(HOSTCC)
-o
mk_ptregs mk_ptregs.o
mk_ptregs.o
:
mk_ptregs.c
$(HOSTCC)
-c
$<
clean-files
:=
mk_ptregs
*
.o
*
~
hostprogs-y
:=
mk_ptregs
always
:=
$
(
hostprogs-y
)
arch/um/kernel/time_kern.c
View file @
e58d2eb0
...
...
@@ -44,7 +44,9 @@ int timer_irq_inited = 0;
static
int
first_tick
;
static
unsigned
long
long
prev_usecs
;
#ifdef CONFIG_UML_REAL_TIME_CLOCK
static
long
long
delta
;
/* Deviation per interval */
#endif
#define MILLION 1000000
...
...
@@ -60,7 +62,7 @@ void timer_irq(union uml_pt_regs *regs)
}
if
(
first_tick
){
#if
defined(CONFIG_UML_REAL_TIME_CLOCK)
#if
def CONFIG_UML_REAL_TIME_CLOCK
/* We've had 1 tick */
unsigned
long
long
usecs
=
os_usecs
();
...
...
arch/um/kernel/vmlinux.lds.S
deleted
100644 → 0
View file @
5c6f34a7
#include <asm-generic/vmlinux.lds.h>
OUTPUT_FORMAT
(
ELF_FORMAT
)
OUTPUT_ARCH
(
ELF_ARCH
)
ENTRY
(
_start
)
jiffies
=
jiffies_64
;
SECTIONS
{
#include "asm/common.lds.S"
}
arch/um/sys-i386/Makefile
View file @
e58d2eb0
...
...
@@ -8,10 +8,13 @@ USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o
USER_OBJS
:=
$(
foreach
file,
$(USER_OBJS)
,
$(obj)
/
$(file)
)
SYMLINKS
=
bitops.c semaphore.c highmem.c module.c
SYMLINKS
:=
$(
foreach
f,
$(SYMLINKS)
,
$(src)
/
$f
)
# this needs to be before the foreach, because clean-files does not accept
# complete paths like $(src)/$f.
clean-files
:=
$(SYMLINKS)
SYMLINKS
:=
$(
foreach
f,
$(SYMLINKS)
,
$(src)
/
$f
)
bitops.c-dir
=
lib
semaphore.c-dir
=
kernel
highmem.c-dir
=
mm
...
...
arch/um/sys-i386/util/Makefile
View file @
e58d2eb0
...
...
@@ -6,8 +6,3 @@ mk_thread-objs := mk_thread_kern.o mk_thread_user.o
HOSTCFLAGS_mk_thread_kern.o
:=
$(CFLAGS)
$(CPPFLAGS)
HOSTCFLAGS_mk_thread_user.o
:=
$(USER_CFLAGS)
clean
:
$(RM)
-f
$
(
build-targets
)
archmrproper
:
clean
drivers/input/serio/parkbd.c
View file @
e58d2eb0
...
...
@@ -160,6 +160,7 @@ static struct serio * __init parkbd_allocate_serio(void)
serio
=
kmalloc
(
sizeof
(
struct
serio
),
GFP_KERNEL
);
if
(
serio
)
{
memset
(
serio
,
0
,
sizeof
(
struct
serio
));
serio
->
type
=
parkbd_mode
;
serio
->
write
=
parkbd_write
,
strlcpy
(
serio
->
name
,
"PARKBD AT/XT keyboard adapter"
,
sizeof
(
serio
->
name
));
...
...
drivers/mtd/maps/lubbock-flash.c
View file @
e58d2eb0
/*
* $Id: lubbock-flash.c,v 1.1
5 2004/07/12 21:59:44 dwmw2
Exp $
* $Id: lubbock-flash.c,v 1.1
8 2004/09/28 18:54:40 nico
Exp $
*
* Map driver for the Lubbock developer platform.
*
...
...
@@ -15,11 +15,13 @@
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/dma-mapping.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/map.h>
#include <linux/mtd/partitions.h>
#include <asm/io.h>
#include <asm/hardware.h>
#include <asm/arch/pxa-regs.h>
#include <asm/arch/lubbock.h>
...
...
@@ -82,16 +84,14 @@ static int __init init_lubbock(void)
lubbock_maps
[
flashboot
].
name
=
"Lubbock Boot ROM"
;
for
(
i
=
0
;
i
<
2
;
i
++
)
{
lubbock_maps
[
i
].
virt
=
(
unsigned
long
)
ioremap
(
lubbock_maps
[
i
].
phys
,
WINDOW_SIZE
);
lubbock_maps
[
i
].
virt
=
(
void
__iomem
*
)
ioremap
(
lubbock_maps
[
i
].
phys
,
WINDOW_SIZE
);
if
(
!
lubbock_maps
[
i
].
virt
)
{
printk
(
KERN_WARNING
"Failed to ioremap %s
\n
"
,
lubbock_maps
[
i
].
name
);
if
(
!
ret
)
ret
=
-
ENOMEM
;
continue
;
}
lubbock_maps
[
i
].
cached
=
__ioremap
(
lubbock_maps
[
i
].
phys
,
WINDOW_SIZE
,
L_PTE_CACHEABLE
,
1
);
lubbock_maps
[
i
].
cached
=
ioremap_cached
(
lubbock_maps
[
i
].
phys
,
WINDOW_SIZE
);
if
(
!
lubbock_maps
[
i
].
cached
)
printk
(
KERN_WARNING
"Failed to ioremap cached %s
\n
"
,
lubbock_maps
[
i
].
name
);
simple_map_init
(
&
lubbock_maps
[
i
]);
...
...
drivers/pci/probe.c
View file @
e58d2eb0
...
...
@@ -373,7 +373,10 @@ int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev * dev, int max
child
->
bridge_ctl
=
bctl
;
cmax
=
pci_scan_child_bus
(
child
);
if
(
cmax
>
max
)
max
=
cmax
;
if
(
cmax
>
max
)
max
=
cmax
;
if
(
child
->
subordinate
>
max
)
max
=
child
->
subordinate
;
}
else
{
/*
* We need to assign a number to this bus which we always
...
...
drivers/video/cyber2000fb.c
View file @
e58d2eb0
...
...
@@ -1166,7 +1166,7 @@ static struct fb_videomode __devinitdata cyber2000fb_default_mode = {
.
vmode
=
FB_VMODE_NONINTERLACED
};
static
char
igs_regs
[]
__devinitdata
=
{
static
char
igs_regs
[]
=
{
EXT_CRT_IRQ
,
0
,
EXT_CRT_TEST
,
0
,
EXT_SYNC_CTL
,
0
,
...
...
@@ -1289,7 +1289,7 @@ cyberpro_alloc_fb_info(unsigned int id, char *name)
return
cfb
;
}
static
void
__devinit
static
void
cyberpro_free_fb_info
(
struct
cfb_info
*
cfb
)
{
if
(
cfb
)
{
...
...
fs/proc/array.c
View file @
e58d2eb0
...
...
@@ -360,7 +360,11 @@ int proc_pid_stat(struct task_struct *task, char * buffer)
read_unlock
(
&
tasklist_lock
);
/* Temporary variable needed for gcc-2.96 */
start_time
=
jiffies_64_to_clock_t
(
task
->
start_time
-
INITIAL_JIFFIES
);
/* convert timespec -> nsec*/
start_time
=
(
unsigned
long
long
)
task
->
start_time
.
tv_sec
*
NSEC_PER_SEC
+
task
->
start_time
.
tv_nsec
;
/* convert nsec -> ticks */
start_time
=
nsec_to_clock_t
(
start_time
);
res
=
sprintf
(
buffer
,
"%d (%s) %c %d %d %d %d %d %lu %lu \
%lu %lu %lu %lu %lu %ld %ld %ld %ld %d %ld %llu %lu %ld %lu %lu %lu %lu %lu \
...
...
fs/xfs/linux-2.6/xfs_ioctl.c
View file @
e58d2eb0
...
...
@@ -818,13 +818,15 @@ xfs_ioctl(
if
(
!
capable
(
CAP_SYS_ADMIN
))
return
-
EPERM
;
freeze_bdev
(
inode
->
i_sb
->
s_bdev
);
if
(
inode
->
i_sb
->
s_frozen
==
SB_UNFROZEN
)
freeze_bdev
(
inode
->
i_sb
->
s_bdev
);
return
0
;
case
XFS_IOC_THAW
:
if
(
!
capable
(
CAP_SYS_ADMIN
))
return
-
EPERM
;
thaw_bdev
(
inode
->
i_sb
->
s_bdev
,
inode
->
i_sb
);
if
(
inode
->
i_sb
->
s_frozen
!=
SB_UNFROZEN
)
thaw_bdev
(
inode
->
i_sb
->
s_bdev
,
inode
->
i_sb
);
return
0
;
case
XFS_IOC_GOINGDOWN
:
{
...
...
fs/xfs/linux-2.6/xfs_super.c
View file @
e58d2eb0
...
...
@@ -339,16 +339,16 @@ linvfs_write_inode(
int
sync
)
{
vnode_t
*
vp
=
LINVFS_GET_VP
(
inode
);
int
error
,
flags
=
FLUSH_INODE
;
int
error
=
0
,
flags
=
FLUSH_INODE
;
error
=
0
;
if
(
vp
)
{
vn_trace_entry
(
vp
,
__FUNCTION__
,
(
inst_t
*
)
__return_address
);
if
(
sync
)
flags
|=
FLUSH_SYNC
;
VOP_IFLUSH
(
vp
,
flags
,
error
);
}
return
error
;
return
-
error
;
}
STATIC
void
...
...
@@ -491,8 +491,14 @@ xfssyncd(
break
;
spin_lock
(
&
vfsp
->
vfs_sync_lock
);
if
(
!
timeleft
)
{
timeleft
=
(
xfs_syncd_centisecs
*
HZ
)
/
100
;
/*
* We can get woken by laptop mode, to do a sync -
* that's the (only!) case where the list would be
* empty with time remaining.
*/
if
(
!
timeleft
||
list_empty
(
&
vfsp
->
vfs_sync_list
))
{
if
(
!
timeleft
)
timeleft
=
(
xfs_syncd_centisecs
*
HZ
)
/
100
;
INIT_LIST_HEAD
(
&
vfsp
->
vfs_sync_work
.
w_list
);
list_add_tail
(
&
vfsp
->
vfs_sync_work
.
w_list
,
&
vfsp
->
vfs_sync_list
);
...
...
@@ -595,9 +601,10 @@ linvfs_sync_super(
if
(
unlikely
(
laptop_mode
))
{
int
prev_sync_seq
=
vfsp
->
vfs_sync_seq
;
/*
* The disk must be active because we're syncing.
* We schedule syncd now (now that the disk is
* We schedule
xfs
syncd now (now that the disk is
* active) instead of later (when it might not be).
*/
wake_up_process
(
vfsp
->
vfs_sync_task
);
...
...
fs/xfs/linux-2.6/xfs_vfs.h
View file @
e58d2eb0
...
...
@@ -216,4 +216,8 @@ extern void bhv_insert_all_vfsops(struct vfs *);
extern
void
bhv_remove_all_vfsops
(
struct
vfs
*
,
int
);
extern
void
bhv_remove_vfsops
(
struct
vfs
*
,
int
);
#define fs_frozen(vfsp) ((vfsp)->vfs_super->s_frozen)
#define fs_check_frozen(vfsp, level) \
vfs_check_frozen(vfsp->vfs_super, level);
#endif
/* __XFS_VFS_H__ */
fs/xfs/xfs_fsops.c
View file @
e58d2eb0
...
...
@@ -590,9 +590,6 @@ xfs_fs_goingdown(
xfs_mount_t
*
mp
,
__uint32_t
inflags
)
{
if
(
!
capable
(
CAP_SYS_ADMIN
))
return
-
EPERM
;
switch
(
inflags
)
{
case
XFS_FSOP_GOING_FLAGS_DEFAULT
:
{
struct
vfs
*
vfsp
=
XFS_MTOVFS
(
mp
);
...
...
@@ -602,7 +599,7 @@ xfs_fs_goingdown(
xfs_force_shutdown
(
mp
,
XFS_FORCE_UMOUNT
);
thaw_bdev
(
sb
->
s_bdev
,
sb
);
}
break
;
}
case
XFS_FSOP_GOING_FLAGS_LOGFLUSH
:
...
...
fs/xfs/xfs_log.c
View file @
e58d2eb0
...
...
@@ -811,7 +811,7 @@ xfs_log_need_covered(xfs_mount_t *mp)
xlog_t
*
log
=
mp
->
m_log
;
vfs_t
*
vfsp
=
XFS_MTOVFS
(
mp
);
if
(
vfsp
->
vfs_super
->
s_frozen
||
XFS_FORCED_SHUTDOWN
(
mp
)
||
if
(
fs_frozen
(
vfsp
)
||
XFS_FORCED_SHUTDOWN
(
mp
)
||
(
vfsp
->
vfs_flag
&
VFS_RDONLY
))
return
0
;
...
...
fs/xfs/xfs_trans.c
View file @
e58d2eb0
...
...
@@ -131,7 +131,7 @@ xfs_trans_alloc(
xfs_mount_t
*
mp
,
uint
type
)
{
vfs_check_frozen
(
XFS_MTOVFS
(
mp
)
->
vfs_super
,
SB_FREEZE_TRANS
);
fs_check_frozen
(
XFS_MTOVFS
(
mp
)
,
SB_FREEZE_TRANS
);
atomic_inc
(
&
mp
->
m_active_trans
);
return
(
_xfs_trans_alloc
(
mp
,
type
));
...
...
include/asm-generic/pgtable.h
View file @
e58d2eb0
...
...
@@ -13,11 +13,19 @@
* Note: the old pte is known to not be writable, so we don't need to
* worry about dirty bits etc getting lost.
*/
#ifndef __HAVE_ARCH_SET_PTE_ATOMIC
#define ptep_establish(__vma, __address, __ptep, __entry) \
do { \
set_pte(__ptep, __entry); \
flush_tlb_page(__vma, __address); \
} while (0)
#else
/* __HAVE_ARCH_SET_PTE_ATOMIC */
#define ptep_establish(__vma, __address, __ptep, __entry) \
do { \
set_pte_atomic(__ptep, __entry); \
flush_tlb_page(__vma, __address); \
} while (0)
#endif
/* __HAVE_ARCH_SET_PTE_ATOMIC */
#endif
#ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
...
...
include/asm-h8300/bitops.h
View file @
e58d2eb0
...
...
@@ -273,6 +273,8 @@ static __inline__ unsigned long find_next_bit(const unsigned long *addr,
return
result
+
__ffs
(
tmp
);
}
#define find_first_bit(addr, size) find_next_bit(addr, size, 0)
/*
* Every architecture must define this function. It's the fastest
* way of searching a 140-bit bitmap where the first 100 bits are
...
...
include/asm-i386/pgtable-3level.h
View file @
e58d2eb0
...
...
@@ -54,6 +54,7 @@ static inline void set_pte(pte_t *ptep, pte_t pte)
smp_wmb
();
ptep
->
pte_low
=
pte
.
pte_low
;
}
#define __HAVE_ARCH_SET_PTE_ATOMIC
#define set_pte_atomic(pteptr,pteval) \
set_64bit((unsigned long long *)(pteptr),pte_val(pteval))
#define set_pmd(pmdptr,pmdval) \
...
...
include/asm-m32r/unistd.h
View file @
e58d2eb0
...
...
@@ -294,25 +294,16 @@
#define __NR_mq_getsetattr (__NR_mq_open+5)
#define __NR_sys_kexec_load 283
#define __NR_waitid 284
#define __NR_perfctr_info 285
#define __NR_vperfctr_open (__NR_perfctr_info+1)
#define __NR_vperfctr_control (__NR_perfctr_info+2)
#define __NR_vperfctr_unlink (__NR_perfctr_info+3)
#define __NR_vperfctr_iresume (__NR_perfctr_info+4)
#define __NR_vperfctr_read (__NR_perfctr_info+5)
#define __NR_add_key 291
#define __NR_request_key 292
#define __NR_keyctl 293
#define NR_syscalls 2
94
#define NR_syscalls 2
85
/* user-visible error numbers are in the range -1 - -12
8
: see
/* user-visible error numbers are in the range -1 - -12
4
: see
* <asm-m32r/errno.h>
*/
#define __syscall_return(type, res) \
do { \
if ((unsigned long)(res) >= (unsigned long)(-(12
8
+ 1))) { \
if ((unsigned long)(res) >= (unsigned long)(-(12
4
+ 1))) { \
/* Avoid using "res" which is declared to be in register r0; \
errno might expand to a function call and clobber it. */
\
int __err = -(res); \
...
...
include/asm-um/dma-mapping.h
View file @
e58d2eb0
#ifndef _ASM_DMA_MAPPING_H
#define _ASM_DMA_MAPPING_H
#include <asm/scatterlist.h>
static
inline
int
dma_supported
(
struct
device
*
dev
,
u64
mask
)
{
...
...
include/asm-um/smp.h
View file @
e58d2eb0
...
...
@@ -8,10 +8,6 @@
#include "asm/current.h"
#include "linux/cpumask.h"
extern
cpumask_t
cpu_online_map
;
extern
cpumask_t
cpu_possible_map
;
#define smp_processor_id() (current_thread->cpu)
#define cpu_logical_map(n) (n)
#define cpu_number_map(n) (n)
...
...
@@ -19,8 +15,6 @@ extern cpumask_t cpu_possible_map;
extern
int
hard_smp_processor_id
(
void
);
#define NO_PROC_ID -1
#define cpu_online(cpu) cpu_isset(cpu, cpu_online_map)
extern
int
ncpus
;
...
...
include/linux/acct.h
View file @
e58d2eb0
...
...
@@ -172,17 +172,24 @@ static inline u32 jiffies_to_AHZ(unsigned long x)
#endif
}
static
inline
u64
jiffies_64
_to_AHZ
(
u64
x
)
static
inline
u64
nsec
_to_AHZ
(
u64
x
)
{
#if (TICK_NSEC % (NSEC_PER_SEC / AHZ)) == 0
#if HZ != AHZ
do_div
(
x
,
HZ
/
AHZ
);
#endif
#else
x
*=
TICK_NSEC
;
#if (NSEC_PER_SEC % AHZ) == 0
do_div
(
x
,
(
NSEC_PER_SEC
/
AHZ
));
#elif (AHZ % 512) == 0
x
*=
AHZ
/
512
;
do_div
(
x
,
(
NSEC_PER_SEC
/
512
));
#else
/*
* max relative error 5.7e-8 (1.8s per year) for AHZ <= 1024,
* overflow after 64.99 years.
* exact for AHZ=60, 72, 90, 120, 144, 180, 300, 600, 900, ...
*/
x
*=
9
;
do_div
(
x
,
(
unsigned
long
)((
9ull
*
NSEC_PER_SEC
+
(
AHZ
/
2
))
/
AHZ
));
#endif
return
x
;
return
x
;
}
#endif
/* __KERNEL */
...
...
include/linux/highmem.h
View file @
e58d2eb0
...
...
@@ -40,6 +40,8 @@ static inline void clear_user_highpage(struct page *page, unsigned long vaddr)
void
*
addr
=
kmap_atomic
(
page
,
KM_USER0
);
clear_user_page
(
addr
,
vaddr
,
page
);
kunmap_atomic
(
addr
,
KM_USER0
);
/* Make sure this page is cleared on other CPU's too before using it */
smp_wmb
();
}
static
inline
void
clear_highpage
(
struct
page
*
page
)
...
...
@@ -73,6 +75,8 @@ static inline void copy_user_highpage(struct page *to, struct page *from, unsign
copy_user_page
(
vto
,
vfrom
,
vaddr
,
to
);
kunmap_atomic
(
vfrom
,
KM_USER0
);
kunmap_atomic
(
vto
,
KM_USER1
);
/* Make sure this page is cleared on other CPU's too before using it */
smp_wmb
();
}
static
inline
void
copy_highpage
(
struct
page
*
to
,
struct
page
*
from
)
...
...
include/linux/sched.h
View file @
e58d2eb0
...
...
@@ -508,7 +508,7 @@ struct task_struct {
struct
timer_list
real_timer
;
unsigned
long
utime
,
stime
;
unsigned
long
nvcsw
,
nivcsw
;
/* context switch counts */
u64
start_time
;
struct
timespec
start_time
;
/* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */
unsigned
long
min_flt
,
maj_flt
;
/* process credentials */
...
...
include/linux/times.h
View file @
e58d2eb0
...
...
@@ -55,6 +55,26 @@ static inline u64 jiffies_64_to_clock_t(u64 x)
}
#endif
static
inline
u64
nsec_to_clock_t
(
u64
x
)
{
#if (NSEC_PER_SEC % USER_HZ) == 0
do_div
(
x
,
(
NSEC_PER_SEC
/
USER_HZ
));
#elif (USER_HZ % 512) == 0
x
*=
USER_HZ
/
512
;
do_div
(
x
,
(
NSEC_PER_SEC
/
512
));
#else
/*
* max relative error 5.7e-8 (1.8s per year) for USER_HZ <= 1024,
* overflow after 64.99 years.
* exact for HZ=60, 72, 90, 120, 144, 180, 300, 600, 900, ...
*/
x
*=
9
;
do_div
(
x
,
(
unsigned
long
)((
9ull
*
NSEC_PER_SEC
+
(
USER_HZ
/
2
))
/
USER_HZ
));
#endif
return
x
;
}
struct
tms
{
clock_t
tms_utime
;
clock_t
tms_stime
;
...
...
kernel/acct.c
View file @
e58d2eb0
...
...
@@ -384,6 +384,8 @@ static void do_acct_process(long exitcode, struct file *file)
unsigned
long
vsize
;
unsigned
long
flim
;
u64
elapsed
;
u64
run_time
;
struct
timespec
uptime
;
/*
* First check to see if there is enough free_space to continue
...
...
@@ -401,7 +403,13 @@ static void do_acct_process(long exitcode, struct file *file)
ac
.
ac_version
=
ACCT_VERSION
|
ACCT_BYTEORDER
;
strlcpy
(
ac
.
ac_comm
,
current
->
comm
,
sizeof
(
ac
.
ac_comm
));
elapsed
=
jiffies_64_to_AHZ
(
get_jiffies_64
()
-
current
->
start_time
);
/* calculate run_time in nsec*/
do_posix_clock_monotonic_gettime
(
&
uptime
);
run_time
=
(
u64
)
uptime
.
tv_sec
*
NSEC_PER_SEC
+
uptime
.
tv_nsec
;
run_time
-=
(
u64
)
current
->
start_time
.
tv_sec
*
NSEC_PER_SEC
+
current
->
start_time
.
tv_nsec
;
/* convert nsec -> AHZ */
elapsed
=
nsec_to_AHZ
(
run_time
);
#if ACCT_VERSION==3
ac
.
ac_etime
=
encode_float
(
elapsed
);
#else
...
...
kernel/fork.c
View file @
e58d2eb0
...
...
@@ -992,7 +992,7 @@ static task_t *copy_process(unsigned long clone_flags,
p
->
utime
=
p
->
stime
=
0
;
p
->
lock_depth
=
-
1
;
/* -1 = no lock */
p
->
start_time
=
get_jiffies_64
(
);
do_posix_clock_monotonic_gettime
(
&
p
->
start_time
);
p
->
security
=
NULL
;
p
->
io_context
=
NULL
;
p
->
io_wait
=
NULL
;
...
...
@@ -1146,7 +1146,8 @@ static task_t *copy_process(unsigned long clone_flags,
bad_fork_cleanup_namespace:
exit_namespace
(
p
);
bad_fork_cleanup_mm:
mmput
(
p
->
mm
);
if
(
p
->
mm
)
mmput
(
p
->
mm
);
bad_fork_cleanup_signal:
exit_signal
(
p
);
bad_fork_cleanup_sighand:
...
...
kernel/posix-timers.c
View file @
e58d2eb0
...
...
@@ -219,11 +219,6 @@ static __init int init_posix_timers(void)
.
clock_set
=
do_posix_clock_monotonic_settime
};
#ifdef CONFIG_TIME_INTERPOLATION
/* Clocks are more accurate with time interpolators */
clock_realtime
.
res
=
clock_monotonic
.
res
=
time_interpolator_resolution
();
#endif
register_posix_clock
(
CLOCK_REALTIME
,
&
clock_realtime
);
register_posix_clock
(
CLOCK_MONOTONIC
,
&
clock_monotonic
);
...
...
mm/oom_kill.c
View file @
e58d2eb0
...
...
@@ -26,6 +26,7 @@
/**
* oom_badness - calculate a numeric value for how bad this task has been
* @p: task struct of which task we should calculate
* @p: current uptime in seconds
*
* The formula used is relatively simple and documented inline in the
* function. The main rationale is that we want to select a good task
...
...
@@ -41,7 +42,7 @@
* of least surprise ... (be careful when you change it)
*/
static
unsigned
long
badness
(
struct
task_struct
*
p
)
static
unsigned
long
badness
(
struct
task_struct
*
p
,
unsigned
long
uptime
)
{
unsigned
long
points
,
cpu_time
,
run_time
,
s
;
...
...
@@ -56,12 +57,16 @@ static unsigned long badness(struct task_struct *p)
points
=
p
->
mm
->
total_vm
;
/*
* CPU time is in
seconds and run time is in minutes. There is no
* particular reason for this other than that it turned out to work
*
very well in practice.
* CPU time is in
tens of seconds and run time is in thousands
* of seconds. There is no particular reason for this other than
* that it turned out to work
very well in practice.
*/
cpu_time
=
(
p
->
utime
+
p
->
stime
)
>>
(
SHIFT_HZ
+
3
);
run_time
=
(
get_jiffies_64
()
-
p
->
start_time
)
>>
(
SHIFT_HZ
+
10
);
if
(
uptime
>=
p
->
start_time
.
tv_sec
)
run_time
=
(
uptime
-
p
->
start_time
.
tv_sec
)
>>
10
;
else
run_time
=
0
;
s
=
int_sqrt
(
cpu_time
);
if
(
s
)
...
...
@@ -111,10 +116,12 @@ static struct task_struct * select_bad_process(void)
unsigned
long
maxpoints
=
0
;
struct
task_struct
*
g
,
*
p
;
struct
task_struct
*
chosen
=
NULL
;
struct
timespec
uptime
;
do_posix_clock_monotonic_gettime
(
&
uptime
);
do_each_thread
(
g
,
p
)
if
(
p
->
pid
)
{
unsigned
long
points
=
badness
(
p
);
unsigned
long
points
=
badness
(
p
,
uptime
.
tv_sec
);
if
(
points
>
maxpoints
)
{
chosen
=
p
;
maxpoints
=
points
;
...
...
mm/page-writeback.c
View file @
e58d2eb0
...
...
@@ -153,11 +153,9 @@ get_dirty_limits(struct writeback_state *wbs, long *pbackground, long *pdirty)
if
(
dirty_ratio
<
5
)
dirty_ratio
=
5
;
/*
* Keep the ratio between dirty_ratio and background_ratio roughly
* what the sysctls are after dirty_ratio has been scaled (above).
*/
background_ratio
=
dirty_background_ratio
*
dirty_ratio
/
vm_dirty_ratio
;
background_ratio
=
dirty_background_ratio
;
if
(
background_ratio
>=
dirty_ratio
)
background_ratio
=
dirty_ratio
/
2
;
background
=
(
background_ratio
*
total_pages
)
/
100
;
dirty
=
(
dirty_ratio
*
total_pages
)
/
100
;
...
...
net/sunrpc/svcauth.c
View file @
e58d2eb0
...
...
@@ -183,7 +183,7 @@ auth_domain_lookup(struct auth_domain *item, int set)
}
/* Didn't find anything */
if
(
!
set
)
goto
out_n
oset
;
goto
out_n
ada
;
auth_domain_cache
.
entries
++
;
out_set:
set_bit
(
CACHE_HASHED
,
&
item
->
h
.
flags
);
...
...
@@ -193,6 +193,8 @@ auth_domain_lookup(struct auth_domain *item, int set)
cache_fresh
(
&
auth_domain_cache
,
&
item
->
h
,
item
->
h
.
expiry_time
);
cache_get
(
&
item
->
h
);
return
item
;
out_nada:
tmp
=
NULL
;
out_noset:
read_unlock
(
&
auth_domain_cache
.
hash_lock
);
return
tmp
;
...
...
security/selinux/hooks.c
View file @
e58d2eb0
...
...
@@ -2466,21 +2466,14 @@ static int selinux_file_ioctl(struct file *file, unsigned int cmd,
return
error
;
}
static
int
selinux_file_mmap
(
struct
file
*
file
,
unsigned
long
prot
,
unsigned
long
flags
)
static
int
file_map_prot_check
(
struct
file
*
file
,
unsigned
long
prot
,
int
shared
)
{
u32
av
;
int
rc
;
rc
=
secondary_ops
->
file_mmap
(
file
,
prot
,
flags
);
if
(
rc
)
return
rc
;
if
(
file
)
{
/* read access is always possible with a mapping */
av
=
FILE__READ
;
u32
av
=
FILE__READ
;
/* write access only matters if the mapping is shared */
if
(
(
flags
&
MAP_TYPE
)
==
MAP_SHARED
&&
(
prot
&
PROT_WRITE
))
if
(
shared
&&
(
prot
&
PROT_WRITE
))
av
|=
FILE__WRITE
;
if
(
prot
&
PROT_EXEC
)
...
...
@@ -2491,6 +2484,18 @@ static int selinux_file_mmap(struct file *file, unsigned long prot, unsigned lon
return
0
;
}
static
int
selinux_file_mmap
(
struct
file
*
file
,
unsigned
long
prot
,
unsigned
long
flags
)
{
int
rc
;
rc
=
secondary_ops
->
file_mmap
(
file
,
prot
,
flags
);
if
(
rc
)
return
rc
;
return
file_map_prot_check
(
file
,
prot
,
(
flags
&
MAP_TYPE
)
==
MAP_SHARED
);
}
static
int
selinux_file_mprotect
(
struct
vm_area_struct
*
vma
,
unsigned
long
prot
)
{
...
...
@@ -2500,7 +2505,7 @@ static int selinux_file_mprotect(struct vm_area_struct *vma,
if
(
rc
)
return
rc
;
return
selinux_file_mmap
(
vma
->
vm_file
,
prot
,
vma
->
vm_flags
);
return
file_map_prot_check
(
vma
->
vm_file
,
prot
,
vma
->
vm_flags
&
VM_SHARED
);
}
static
int
selinux_file_lock
(
struct
file
*
file
,
unsigned
int
cmd
)
...
...
@@ -2625,6 +2630,11 @@ static int selinux_task_alloc_security(struct task_struct *tsk)
tsec2
->
exec_sid
=
tsec1
->
exec_sid
;
tsec2
->
create_sid
=
tsec1
->
create_sid
;
/* Retain ptracer SID across fork, if any.
This will be reset by the ptrace hook upon any
subsequent ptrace_attach operations. */
tsec2
->
ptrace_sid
=
tsec1
->
ptrace_sid
;
return
0
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment