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
afa86fc4
Commit
afa86fc4
authored
Oct 22, 2012
by
Al Viro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
flagday: don't pass regs to copy_thread()
Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
135c37b8
Changes
34
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
45 additions
and
60 deletions
+45
-60
arch/alpha/kernel/process.c
arch/alpha/kernel/process.c
+1
-1
arch/arm/kernel/process.c
arch/arm/kernel/process.c
+1
-1
arch/arm64/kernel/process.c
arch/arm64/kernel/process.c
+1
-2
arch/avr32/kernel/process.c
arch/avr32/kernel/process.c
+1
-1
arch/blackfin/kernel/process.c
arch/blackfin/kernel/process.c
+3
-3
arch/c6x/kernel/process.c
arch/c6x/kernel/process.c
+1
-1
arch/cris/arch-v10/kernel/process.c
arch/cris/arch-v10/kernel/process.c
+1
-2
arch/cris/arch-v32/kernel/process.c
arch/cris/arch-v32/kernel/process.c
+1
-2
arch/frv/kernel/process.c
arch/frv/kernel/process.c
+1
-1
arch/h8300/kernel/process.c
arch/h8300/kernel/process.c
+1
-1
arch/hexagon/kernel/process.c
arch/hexagon/kernel/process.c
+1
-2
arch/ia64/kernel/process.c
arch/ia64/kernel/process.c
+2
-1
arch/m32r/kernel/process.c
arch/m32r/kernel/process.c
+1
-1
arch/m68k/kernel/process.c
arch/m68k/kernel/process.c
+1
-2
arch/microblaze/kernel/process.c
arch/microblaze/kernel/process.c
+1
-2
arch/mips/kernel/process.c
arch/mips/kernel/process.c
+2
-2
arch/mn10300/kernel/process.c
arch/mn10300/kernel/process.c
+1
-1
arch/openrisc/kernel/process.c
arch/openrisc/kernel/process.c
+1
-1
arch/parisc/kernel/process.c
arch/parisc/kernel/process.c
+2
-3
arch/powerpc/kernel/process.c
arch/powerpc/kernel/process.c
+2
-2
arch/s390/kernel/process.c
arch/s390/kernel/process.c
+1
-2
arch/score/kernel/process.c
arch/score/kernel/process.c
+2
-2
arch/sh/kernel/process_32.c
arch/sh/kernel/process_32.c
+1
-2
arch/sh/kernel/process_64.c
arch/sh/kernel/process_64.c
+2
-3
arch/sparc/kernel/process_32.c
arch/sparc/kernel/process_32.c
+2
-3
arch/sparc/kernel/process_64.c
arch/sparc/kernel/process_64.c
+2
-2
arch/tile/kernel/process.c
arch/tile/kernel/process.c
+2
-3
arch/um/kernel/process.c
arch/um/kernel/process.c
+1
-2
arch/unicore32/kernel/process.c
arch/unicore32/kernel/process.c
+1
-1
arch/x86/kernel/process_32.c
arch/x86/kernel/process_32.c
+1
-2
arch/x86/kernel/process_64.c
arch/x86/kernel/process_64.c
+1
-2
arch/xtensa/kernel/process.c
arch/xtensa/kernel/process.c
+1
-2
include/linux/sched.h
include/linux/sched.h
+1
-1
kernel/fork.c
kernel/fork.c
+1
-1
No files found.
arch/alpha/kernel/process.c
View file @
afa86fc4
...
@@ -241,7 +241,7 @@ release_thread(struct task_struct *dead_task)
...
@@ -241,7 +241,7 @@ release_thread(struct task_struct *dead_task)
int
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
,
struct
pt_regs
*
wontuse
)
struct
task_struct
*
p
)
{
{
extern
void
ret_from_fork
(
void
);
extern
void
ret_from_fork
(
void
);
extern
void
ret_from_kernel_thread
(
void
);
extern
void
ret_from_kernel_thread
(
void
);
...
...
arch/arm/kernel/process.c
View file @
afa86fc4
...
@@ -376,7 +376,7 @@ asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");
...
@@ -376,7 +376,7 @@ asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");
int
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
stack_start
,
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
stack_start
,
unsigned
long
stk_sz
,
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
unsigned
long
stk_sz
,
struct
task_struct
*
p
)
{
{
struct
thread_info
*
thread
=
task_thread_info
(
p
);
struct
thread_info
*
thread
=
task_thread_info
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
...
...
arch/arm64/kernel/process.c
View file @
afa86fc4
...
@@ -234,8 +234,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
...
@@ -234,8 +234,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
asmlinkage
void
ret_from_fork
(
void
)
asm
(
"ret_from_fork"
);
asmlinkage
void
ret_from_fork
(
void
)
asm
(
"ret_from_fork"
);
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
stack_start
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
stack_start
,
unsigned
long
stk_sz
,
struct
task_struct
*
p
,
unsigned
long
stk_sz
,
struct
task_struct
*
p
)
struct
pt_regs
*
unused
)
{
{
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
unsigned
long
tls
=
p
->
thread
.
tp_value
;
unsigned
long
tls
=
p
->
thread
.
tp_value
;
...
...
arch/avr32/kernel/process.c
View file @
afa86fc4
...
@@ -299,7 +299,7 @@ asmlinkage void syscall_return(void);
...
@@ -299,7 +299,7 @@ asmlinkage void syscall_return(void);
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
struct
task_struct
*
p
)
{
{
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
...
...
arch/blackfin/kernel/process.c
View file @
afa86fc4
...
@@ -141,14 +141,14 @@ asmlinkage int bfin_clone(unsigned long clone_flags, unsigned long newsp)
...
@@ -141,14 +141,14 @@ asmlinkage int bfin_clone(unsigned long clone_flags, unsigned long newsp)
int
int
copy_thread
(
unsigned
long
clone_flags
,
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
topstk
,
unsigned
long
usp
,
unsigned
long
topstk
,
struct
task_struct
*
p
,
struct
pt_regs
*
regs
)
struct
task_struct
*
p
)
{
{
struct
pt_regs
*
childregs
;
struct
pt_regs
*
childregs
;
unsigned
long
*
v
;
unsigned
long
*
v
;
childregs
=
(
struct
pt_regs
*
)
(
task_stack_page
(
p
)
+
THREAD_SIZE
)
-
1
;
childregs
=
(
struct
pt_regs
*
)
(
task_stack_page
(
p
)
+
THREAD_SIZE
)
-
1
;
v
=
((
unsigned
long
*
)
childregs
)
-
2
;
v
=
((
unsigned
long
*
)
childregs
)
-
2
;
if
(
unlikely
(
!
regs
))
{
if
(
unlikely
(
p
->
flags
&
PF_KTHREAD
))
{
memset
(
childregs
,
0
,
sizeof
(
struct
pt_regs
));
memset
(
childregs
,
0
,
sizeof
(
struct
pt_regs
));
v
[
0
]
=
usp
;
v
[
0
]
=
usp
;
v
[
1
]
=
topstk
;
v
[
1
]
=
topstk
;
...
@@ -157,7 +157,7 @@ copy_thread(unsigned long clone_flags,
...
@@ -157,7 +157,7 @@ copy_thread(unsigned long clone_flags,
__asm__
__volatile__
(
"%0 = syscfg;"
:
"=da"
(
childregs
->
syscfg
)
:
);
__asm__
__volatile__
(
"%0 = syscfg;"
:
"=da"
(
childregs
->
syscfg
)
:
);
p
->
thread
.
usp
=
0
;
p
->
thread
.
usp
=
0
;
}
else
{
}
else
{
*
childregs
=
*
regs
;
*
childregs
=
*
current_pt_regs
()
;
childregs
->
r0
=
0
;
childregs
->
r0
=
0
;
p
->
thread
.
usp
=
usp
?
:
rdusp
();
p
->
thread
.
usp
=
usp
?
:
rdusp
();
v
[
0
]
=
v
[
1
]
=
0
;
v
[
0
]
=
v
[
1
]
=
0
;
...
...
arch/c6x/kernel/process.c
View file @
afa86fc4
...
@@ -139,7 +139,7 @@ void start_thread(struct pt_regs *regs, unsigned int pc, unsigned long usp)
...
@@ -139,7 +139,7 @@ void start_thread(struct pt_regs *regs, unsigned int pc, unsigned long usp)
*/
*/
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
ustk_size
,
unsigned
long
ustk_size
,
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
struct
task_struct
*
p
)
{
{
struct
pt_regs
*
childregs
;
struct
pt_regs
*
childregs
;
...
...
arch/cris/arch-v10/kernel/process.c
View file @
afa86fc4
...
@@ -94,8 +94,7 @@ asmlinkage void ret_from_fork(void);
...
@@ -94,8 +94,7 @@ asmlinkage void ret_from_fork(void);
asmlinkage
void
ret_from_kernel_thread
(
void
);
asmlinkage
void
ret_from_kernel_thread
(
void
);
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
{
{
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
switch_stack
*
swstack
=
((
struct
switch_stack
*
)
childregs
)
-
1
;
struct
switch_stack
*
swstack
=
((
struct
switch_stack
*
)
childregs
)
-
1
;
...
...
arch/cris/arch-v32/kernel/process.c
View file @
afa86fc4
...
@@ -109,8 +109,7 @@ extern asmlinkage void ret_from_kernel_thread(void);
...
@@ -109,8 +109,7 @@ extern asmlinkage void ret_from_kernel_thread(void);
int
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
{
{
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
switch_stack
*
swstack
=
((
struct
switch_stack
*
)
childregs
)
-
1
;
struct
switch_stack
*
swstack
=
((
struct
switch_stack
*
)
childregs
)
-
1
;
...
...
arch/frv/kernel/process.c
View file @
afa86fc4
...
@@ -144,7 +144,7 @@ inline unsigned long user_stack(const struct pt_regs *regs)
...
@@ -144,7 +144,7 @@ inline unsigned long user_stack(const struct pt_regs *regs)
*/
*/
int
copy_thread
(
unsigned
long
clone_flags
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
unsigned
long
usp
,
unsigned
long
arg
,
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
struct
task_struct
*
p
)
{
{
struct
pt_regs
*
childregs
;
struct
pt_regs
*
childregs
;
...
...
arch/h8300/kernel/process.c
View file @
afa86fc4
...
@@ -129,7 +129,7 @@ void flush_thread(void)
...
@@ -129,7 +129,7 @@ void flush_thread(void)
int
copy_thread
(
unsigned
long
clone_flags
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
topstk
,
unsigned
long
usp
,
unsigned
long
topstk
,
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
struct
task_struct
*
p
)
{
{
struct
pt_regs
*
childregs
;
struct
pt_regs
*
childregs
;
...
...
arch/hexagon/kernel/process.c
View file @
afa86fc4
...
@@ -87,8 +87,7 @@ unsigned long thread_saved_pc(struct task_struct *tsk)
...
@@ -87,8 +87,7 @@ unsigned long thread_saved_pc(struct task_struct *tsk)
* Copy architecture-specific thread state
* Copy architecture-specific thread state
*/
*/
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
struct
task_struct
*
p
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
pt_regs
*
unused
)
{
{
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
hexagon_switch_stack
*
ss
;
struct
hexagon_switch_stack
*
ss
;
...
...
arch/ia64/kernel/process.c
View file @
afa86fc4
...
@@ -393,12 +393,13 @@ ia64_load_extra (struct task_struct *task)
...
@@ -393,12 +393,13 @@ ia64_load_extra (struct task_struct *task)
int
int
copy_thread
(
unsigned
long
clone_flags
,
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
user_stack_base
,
unsigned
long
user_stack_size
,
unsigned
long
user_stack_base
,
unsigned
long
user_stack_size
,
struct
task_struct
*
p
,
struct
pt_regs
*
regs
)
struct
task_struct
*
p
)
{
{
extern
char
ia64_ret_from_clone
;
extern
char
ia64_ret_from_clone
;
struct
switch_stack
*
child_stack
,
*
stack
;
struct
switch_stack
*
child_stack
,
*
stack
;
unsigned
long
rbs
,
child_rbs
,
rbs_size
;
unsigned
long
rbs
,
child_rbs
,
rbs_size
;
struct
pt_regs
*
child_ptregs
;
struct
pt_regs
*
child_ptregs
;
struct
pt_regs
*
regs
=
current_pt_regs
();
int
retval
=
0
;
int
retval
=
0
;
child_ptregs
=
(
struct
pt_regs
*
)
((
unsigned
long
)
p
+
IA64_STK_OFFSET
)
-
1
;
child_ptregs
=
(
struct
pt_regs
*
)
((
unsigned
long
)
p
+
IA64_STK_OFFSET
)
-
1
;
...
...
arch/m32r/kernel/process.c
View file @
afa86fc4
...
@@ -192,7 +192,7 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu)
...
@@ -192,7 +192,7 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu)
}
}
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
spu
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
spu
,
unsigned
long
arg
,
struct
task_struct
*
tsk
,
struct
pt_regs
*
unused
)
unsigned
long
arg
,
struct
task_struct
*
tsk
)
{
{
struct
pt_regs
*
childregs
=
task_pt_regs
(
tsk
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
tsk
);
extern
void
ret_from_fork
(
void
);
extern
void
ret_from_fork
(
void
);
...
...
arch/m68k/kernel/process.c
View file @
afa86fc4
...
@@ -154,8 +154,7 @@ asmlinkage int m68k_clone(struct pt_regs *regs)
...
@@ -154,8 +154,7 @@ asmlinkage int m68k_clone(struct pt_regs *regs)
}
}
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
{
{
struct
fork_frame
{
struct
fork_frame
{
struct
switch_stack
sw
;
struct
switch_stack
sw
;
...
...
arch/microblaze/kernel/process.c
View file @
afa86fc4
...
@@ -120,8 +120,7 @@ void flush_thread(void)
...
@@ -120,8 +120,7 @@ void flush_thread(void)
}
}
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
{
{
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
thread_info
*
ti
=
task_thread_info
(
p
);
...
...
arch/mips/kernel/process.c
View file @
afa86fc4
...
@@ -114,10 +114,10 @@ void flush_thread(void)
...
@@ -114,10 +114,10 @@ void flush_thread(void)
}
}
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
struct
task_struct
*
p
,
struct
pt_regs
*
regs
)
unsigned
long
arg
,
struct
task_struct
*
p
)
{
{
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
pt_regs
*
childregs
;
struct
pt_regs
*
childregs
,
*
regs
=
current_pt_regs
()
;
unsigned
long
childksp
;
unsigned
long
childksp
;
p
->
set_child_tid
=
p
->
clear_child_tid
=
NULL
;
p
->
set_child_tid
=
p
->
clear_child_tid
=
NULL
;
...
...
arch/mn10300/kernel/process.c
View file @
afa86fc4
...
@@ -206,7 +206,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
...
@@ -206,7 +206,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
*/
*/
int
copy_thread
(
unsigned
long
clone_flags
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
c_usp
,
unsigned
long
ustk_size
,
unsigned
long
c_usp
,
unsigned
long
ustk_size
,
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
struct
task_struct
*
p
)
{
{
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
pt_regs
*
c_regs
;
struct
pt_regs
*
c_regs
;
...
...
arch/openrisc/kernel/process.c
View file @
afa86fc4
...
@@ -142,7 +142,7 @@ extern asmlinkage void ret_from_fork(void);
...
@@ -142,7 +142,7 @@ extern asmlinkage void ret_from_fork(void);
int
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
struct
task_struct
*
p
,
struct
pt_regs
*
regs
)
unsigned
long
arg
,
struct
task_struct
*
p
)
{
{
struct
pt_regs
*
userregs
;
struct
pt_regs
*
userregs
;
struct
pt_regs
*
kregs
;
struct
pt_regs
*
kregs
;
...
...
arch/parisc/kernel/process.c
View file @
afa86fc4
...
@@ -204,10 +204,9 @@ int dump_task_fpu (struct task_struct *tsk, elf_fpregset_t *r)
...
@@ -204,10 +204,9 @@ int dump_task_fpu (struct task_struct *tsk, elf_fpregset_t *r)
int
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
{
{
struct
pt_regs
*
cregs
=
&
(
p
->
thread
.
regs
);
struct
pt_regs
*
cregs
=
&
(
p
->
thread
.
regs
);
void
*
stack
=
task_stack_page
(
p
);
void
*
stack
=
task_stack_page
(
p
);
/* We have to use void * instead of a function pointer, because
/* We have to use void * instead of a function pointer, because
...
...
arch/powerpc/kernel/process.c
View file @
afa86fc4
...
@@ -733,8 +733,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
...
@@ -733,8 +733,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
extern
unsigned
long
dscr_default
;
/* defined in arch/powerpc/kernel/sysfs.c */
extern
unsigned
long
dscr_default
;
/* defined in arch/powerpc/kernel/sysfs.c */
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
struct
task_struct
*
p
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
pt_regs
*
regs
)
{
{
struct
pt_regs
*
childregs
,
*
kregs
;
struct
pt_regs
*
childregs
,
*
kregs
;
extern
void
ret_from_fork
(
void
);
extern
void
ret_from_fork
(
void
);
...
@@ -759,6 +758,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,
...
@@ -759,6 +758,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,
ti
->
flags
|=
_TIF_RESTOREALL
;
ti
->
flags
|=
_TIF_RESTOREALL
;
f
=
ret_from_kernel_thread
;
f
=
ret_from_kernel_thread
;
}
else
{
}
else
{
struct
pt_regs
*
regs
=
current_pt_regs
();
CHECK_FULL_REGS
(
regs
);
CHECK_FULL_REGS
(
regs
);
*
childregs
=
*
regs
;
*
childregs
=
*
regs
;
if
(
usp
)
if
(
usp
)
...
...
arch/s390/kernel/process.c
View file @
afa86fc4
...
@@ -117,8 +117,7 @@ void release_thread(struct task_struct *dead_task)
...
@@ -117,8 +117,7 @@ void release_thread(struct task_struct *dead_task)
}
}
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
new_stackp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
new_stackp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
{
{
struct
thread_info
*
ti
;
struct
thread_info
*
ti
;
struct
fake_frame
struct
fake_frame
...
...
arch/score/kernel/process.c
View file @
afa86fc4
...
@@ -87,11 +87,11 @@ void flush_thread(void) {}
...
@@ -87,11 +87,11 @@ void flush_thread(void) {}
* set up the kernel stack and exception frames for a new process
* set up the kernel stack and exception frames for a new process
*/
*/
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
regs
)
{
{
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
pt_regs
*
regs
=
current_pt_regs
();
p
->
thread
.
reg0
=
(
unsigned
long
)
childregs
;
p
->
thread
.
reg0
=
(
unsigned
long
)
childregs
;
if
(
unlikely
(
p
->
flags
&
PF_KTHREAD
))
{
if
(
unlikely
(
p
->
flags
&
PF_KTHREAD
))
{
...
...
arch/sh/kernel/process_32.c
View file @
afa86fc4
...
@@ -128,8 +128,7 @@ asmlinkage void ret_from_fork(void);
...
@@ -128,8 +128,7 @@ asmlinkage void ret_from_fork(void);
asmlinkage
void
ret_from_kernel_thread
(
void
);
asmlinkage
void
ret_from_kernel_thread
(
void
);
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
{
{
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
pt_regs
*
childregs
;
struct
pt_regs
*
childregs
;
...
...
arch/sh/kernel/process_64.c
View file @
afa86fc4
...
@@ -371,10 +371,9 @@ asmlinkage void ret_from_fork(void);
...
@@ -371,10 +371,9 @@ asmlinkage void ret_from_fork(void);
asmlinkage
void
ret_from_kernel_thread
(
void
);
asmlinkage
void
ret_from_kernel_thread
(
void
);
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
regs
)
{
{
struct
pt_regs
*
childregs
;
struct
pt_regs
*
childregs
,
*
regs
=
current_pt_regs
()
;
#ifdef CONFIG_SH_FPU
#ifdef CONFIG_SH_FPU
/* can't happen for a kernel thread */
/* can't happen for a kernel thread */
...
...
arch/sparc/kernel/process_32.c
View file @
afa86fc4
...
@@ -319,11 +319,10 @@ extern void ret_from_fork(void);
...
@@ -319,11 +319,10 @@ extern void ret_from_fork(void);
extern
void
ret_from_kernel_thread
(
void
);
extern
void
ret_from_kernel_thread
(
void
);
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
sp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
sp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
regs
)
{
{
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
thread_info
*
ti
=
task_thread_info
(
p
);
struct
pt_regs
*
childregs
;
struct
pt_regs
*
childregs
,
*
regs
=
current_pt_regs
()
;
char
*
new_stack
;
char
*
new_stack
;
#ifndef CONFIG_SMP
#ifndef CONFIG_SMP
...
...
arch/sparc/kernel/process_64.c
View file @
afa86fc4
...
@@ -622,10 +622,10 @@ asmlinkage long sparc_do_fork(unsigned long clone_flags,
...
@@ -622,10 +622,10 @@ asmlinkage long sparc_do_fork(unsigned long clone_flags,
* Child --> %o0 == parents pid, %o1 == 1
* Child --> %o0 == parents pid, %o1 == 1
*/
*/
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
sp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
sp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
regs
)
{
{
struct
thread_info
*
t
=
task_thread_info
(
p
);
struct
thread_info
*
t
=
task_thread_info
(
p
);
struct
pt_regs
*
regs
=
current_pt_regs
();
struct
sparc_stackf
*
parent_sf
;
struct
sparc_stackf
*
parent_sf
;
unsigned
long
child_stack_sz
;
unsigned
long
child_stack_sz
;
char
*
child_trap_frame
;
char
*
child_trap_frame
;
...
...
arch/tile/kernel/process.c
View file @
afa86fc4
...
@@ -157,10 +157,9 @@ void arch_release_thread_info(struct thread_info *info)
...
@@ -157,10 +157,9 @@ void arch_release_thread_info(struct thread_info *info)
static
void
save_arch_state
(
struct
thread_struct
*
t
);
static
void
save_arch_state
(
struct
thread_struct
*
t
);
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
sp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
sp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
{
{
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
)
,
*
regs
=
current_pt_regs
()
;
unsigned
long
ksp
;
unsigned
long
ksp
;
unsigned
long
*
callee_regs
;
unsigned
long
*
callee_regs
;
...
...
arch/um/kernel/process.c
View file @
afa86fc4
...
@@ -161,8 +161,7 @@ void fork_handler(void)
...
@@ -161,8 +161,7 @@ void fork_handler(void)
}
}
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
sp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
sp
,
unsigned
long
arg
,
struct
task_struct
*
p
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
pt_regs
*
regs
)
{
{
void
(
*
handler
)(
void
);
void
(
*
handler
)(
void
);
int
kthread
=
current
->
flags
&
PF_KTHREAD
;
int
kthread
=
current
->
flags
&
PF_KTHREAD
;
...
...
arch/unicore32/kernel/process.c
View file @
afa86fc4
...
@@ -262,7 +262,7 @@ asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread");
...
@@ -262,7 +262,7 @@ asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread");
int
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
stack_start
,
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
stack_start
,
unsigned
long
stk_sz
,
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
unsigned
long
stk_sz
,
struct
task_struct
*
p
)
{
{
struct
thread_info
*
thread
=
task_thread_info
(
p
);
struct
thread_info
*
thread
=
task_thread_info
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
...
...
arch/x86/kernel/process_32.c
View file @
afa86fc4
...
@@ -128,8 +128,7 @@ void release_thread(struct task_struct *dead_task)
...
@@ -128,8 +128,7 @@ void release_thread(struct task_struct *dead_task)
}
}
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
sp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
sp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
{
{
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
task_struct
*
tsk
;
struct
task_struct
*
tsk
;
...
...
arch/x86/kernel/process_64.c
View file @
afa86fc4
...
@@ -146,8 +146,7 @@ static inline u32 read_32bit_tls(struct task_struct *t, int tls)
...
@@ -146,8 +146,7 @@ static inline u32 read_32bit_tls(struct task_struct *t, int tls)
}
}
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
sp
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
sp
,
unsigned
long
arg
,
unsigned
long
arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
regs
)
{
{
int
err
;
int
err
;
struct
pt_regs
*
childregs
;
struct
pt_regs
*
childregs
;
...
...
arch/xtensa/kernel/process.c
View file @
afa86fc4
...
@@ -199,8 +199,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
...
@@ -199,8 +199,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
*/
*/
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp_thread_fn
,
int
copy_thread
(
unsigned
long
clone_flags
,
unsigned
long
usp_thread_fn
,
unsigned
long
thread_fn_arg
,
unsigned
long
thread_fn_arg
,
struct
task_struct
*
p
)
struct
task_struct
*
p
,
struct
pt_regs
*
unused
)
{
{
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
struct
pt_regs
*
childregs
=
task_pt_regs
(
p
);
...
...
include/linux/sched.h
View file @
afa86fc4
...
@@ -2271,7 +2271,7 @@ extern void mm_release(struct task_struct *, struct mm_struct *);
...
@@ -2271,7 +2271,7 @@ extern void mm_release(struct task_struct *, struct mm_struct *);
extern
struct
mm_struct
*
dup_mm
(
struct
task_struct
*
tsk
);
extern
struct
mm_struct
*
dup_mm
(
struct
task_struct
*
tsk
);
extern
int
copy_thread
(
unsigned
long
,
unsigned
long
,
unsigned
long
,
extern
int
copy_thread
(
unsigned
long
,
unsigned
long
,
unsigned
long
,
struct
task_struct
*
,
struct
pt_regs
*
);
struct
task_struct
*
);
extern
void
flush_thread
(
void
);
extern
void
flush_thread
(
void
);
extern
void
exit_thread
(
void
);
extern
void
exit_thread
(
void
);
...
...
kernel/fork.c
View file @
afa86fc4
...
@@ -1320,7 +1320,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
...
@@ -1320,7 +1320,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
retval
=
copy_io
(
clone_flags
,
p
);
retval
=
copy_io
(
clone_flags
,
p
);
if
(
retval
)
if
(
retval
)
goto
bad_fork_cleanup_namespaces
;
goto
bad_fork_cleanup_namespaces
;
retval
=
copy_thread
(
clone_flags
,
stack_start
,
stack_size
,
p
,
regs
);
retval
=
copy_thread
(
clone_flags
,
stack_start
,
stack_size
,
p
);
if
(
retval
)
if
(
retval
)
goto
bad_fork_cleanup_io
;
goto
bad_fork_cleanup_io
;
...
...
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