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
Kirill Smelkov
linux
Commits
e80d6661
Commit
e80d6661
authored
Oct 22, 2012
by
Al Viro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
flagday: kill pt_regs argument of do_fork()
Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
18c26c27
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
19 additions
and
26 deletions
+19
-26
arch/blackfin/kernel/process.c
arch/blackfin/kernel/process.c
+1
-1
arch/ia64/kernel/entry.S
arch/ia64/kernel/entry.S
+6
-8
arch/m68k/kernel/process.c
arch/m68k/kernel/process.c
+1
-1
arch/mips/kernel/linux32.c
arch/mips/kernel/linux32.c
+1
-1
arch/mips/kernel/syscall.c
arch/mips/kernel/syscall.c
+2
-2
arch/sparc/kernel/process_32.c
arch/sparc/kernel/process_32.c
+1
-2
arch/sparc/kernel/process_64.c
arch/sparc/kernel/process_64.c
+1
-2
include/linux/sched.h
include/linux/sched.h
+1
-1
kernel/fork.c
kernel/fork.c
+5
-8
No files found.
arch/blackfin/kernel/process.c
View file @
e80d6661
...
@@ -135,7 +135,7 @@ asmlinkage int bfin_clone(unsigned long clone_flags, unsigned long newsp)
...
@@ -135,7 +135,7 @@ asmlinkage int bfin_clone(unsigned long clone_flags, unsigned long newsp)
#endif
#endif
if
(
newsp
)
if
(
newsp
)
newsp
-=
12
;
newsp
-=
12
;
return
do_fork
(
clone_flags
,
newsp
,
regs
,
0
,
NULL
,
NULL
);
return
do_fork
(
clone_flags
,
newsp
,
0
,
NULL
,
NULL
);
}
}
int
int
...
...
arch/ia64/kernel/entry.S
View file @
e80d6661
...
@@ -116,13 +116,12 @@ GLOBAL_ENTRY(sys_clone2)
...
@@ -116,13 +116,12 @@ GLOBAL_ENTRY(sys_clone2)
mov
loc1
=
r16
//
save
ar
.
pfs
across
do_fork
mov
loc1
=
r16
//
save
ar
.
pfs
across
do_fork
.
body
.
body
mov
out1
=
in1
mov
out1
=
in1
mov
out
3
=
in2
mov
out
2
=
in2
tbit.nz
p6
,
p0
=
in0
,
CLONE_SETTLS_BIT
tbit.nz
p6
,
p0
=
in0
,
CLONE_SETTLS_BIT
mov
out
4
=
in3
//
parent_tidptr
:
valid
only
w
/
CLONE_PARENT_SETTID
mov
out
3
=
in3
//
parent_tidptr
:
valid
only
w
/
CLONE_PARENT_SETTID
;;
;;
(
p6
)
st8
[
r2
]=
in5
//
store
TLS
in
r16
for
copy_thread
()
(
p6
)
st8
[
r2
]=
in5
//
store
TLS
in
r16
for
copy_thread
()
mov
out5
=
in4
//
child_tidptr
:
valid
only
w
/
CLONE_CHILD_SETTID
or
CLONE_CHILD_CLEARTID
mov
out4
=
in4
//
child_tidptr
:
valid
only
w
/
CLONE_CHILD_SETTID
or
CLONE_CHILD_CLEARTID
adds
out2
=
IA64_SWITCH_STACK_SIZE
+
16
,
sp
//
out2
=
&
regs
mov
out0
=
in0
//
out0
=
clone_flags
mov
out0
=
in0
//
out0
=
clone_flags
br.call.sptk.many
rp
=
do_fork
br.call.sptk.many
rp
=
do_fork
.
ret1
:
.
restore
sp
.
ret1
:
.
restore
sp
...
@@ -148,13 +147,12 @@ GLOBAL_ENTRY(sys_clone)
...
@@ -148,13 +147,12 @@ GLOBAL_ENTRY(sys_clone)
mov
loc1
=
r16
//
save
ar
.
pfs
across
do_fork
mov
loc1
=
r16
//
save
ar
.
pfs
across
do_fork
.
body
.
body
mov
out1
=
in1
mov
out1
=
in1
mov
out
3
=
16
//
stacksize
(
compensates
for
16
-
byte
scratch
area
)
mov
out
2
=
16
//
stacksize
(
compensates
for
16
-
byte
scratch
area
)
tbit.nz
p6
,
p0
=
in0
,
CLONE_SETTLS_BIT
tbit.nz
p6
,
p0
=
in0
,
CLONE_SETTLS_BIT
mov
out
4
=
in2
//
parent_tidptr
:
valid
only
w
/
CLONE_PARENT_SETTID
mov
out
3
=
in2
//
parent_tidptr
:
valid
only
w
/
CLONE_PARENT_SETTID
;;
;;
(
p6
)
st8
[
r2
]=
in4
//
store
TLS
in
r13
(
tp
)
(
p6
)
st8
[
r2
]=
in4
//
store
TLS
in
r13
(
tp
)
mov
out5
=
in3
//
child_tidptr
:
valid
only
w
/
CLONE_CHILD_SETTID
or
CLONE_CHILD_CLEARTID
mov
out4
=
in3
//
child_tidptr
:
valid
only
w
/
CLONE_CHILD_SETTID
or
CLONE_CHILD_CLEARTID
adds
out2
=
IA64_SWITCH_STACK_SIZE
+
16
,
sp
//
out2
=
&
regs
mov
out0
=
in0
//
out0
=
clone_flags
mov
out0
=
in0
//
out0
=
clone_flags
br.call.sptk.many
rp
=
do_fork
br.call.sptk.many
rp
=
do_fork
.
ret2
:
.
restore
sp
.
ret2
:
.
restore
sp
...
...
arch/m68k/kernel/process.c
View file @
e80d6661
...
@@ -149,7 +149,7 @@ void flush_thread(void)
...
@@ -149,7 +149,7 @@ void flush_thread(void)
asmlinkage
int
m68k_clone
(
struct
pt_regs
*
regs
)
asmlinkage
int
m68k_clone
(
struct
pt_regs
*
regs
)
{
{
/* regs will be equal to current_pt_regs() */
/* regs will be equal to current_pt_regs() */
return
do_fork
(
regs
->
d1
,
regs
->
d2
,
regs
,
0
,
return
do_fork
(
regs
->
d1
,
regs
->
d2
,
0
,
(
int
__user
*
)
regs
->
d3
,
(
int
__user
*
)
regs
->
d4
);
(
int
__user
*
)
regs
->
d3
,
(
int
__user
*
)
regs
->
d4
);
}
}
...
...
arch/mips/kernel/linux32.c
View file @
e80d6661
...
@@ -312,7 +312,7 @@ _sys32_clone(nabi_no_regargs struct pt_regs regs)
...
@@ -312,7 +312,7 @@ _sys32_clone(nabi_no_regargs struct pt_regs regs)
/* Use __dummy4 instead of getting it off the stack, so that
/* Use __dummy4 instead of getting it off the stack, so that
syscall() works. */
syscall() works. */
child_tidptr
=
(
int
__user
*
)
__dummy4
;
child_tidptr
=
(
int
__user
*
)
__dummy4
;
return
do_fork
(
clone_flags
,
newsp
,
&
regs
,
0
,
return
do_fork
(
clone_flags
,
newsp
,
0
,
parent_tidptr
,
child_tidptr
);
parent_tidptr
,
child_tidptr
);
}
}
...
...
arch/mips/kernel/syscall.c
View file @
e80d6661
...
@@ -92,7 +92,7 @@ save_static_function(sys_fork);
...
@@ -92,7 +92,7 @@ save_static_function(sys_fork);
static
int
__used
noinline
static
int
__used
noinline
_sys_fork
(
nabi_no_regargs
struct
pt_regs
regs
)
_sys_fork
(
nabi_no_regargs
struct
pt_regs
regs
)
{
{
return
do_fork
(
SIGCHLD
,
regs
.
regs
[
29
],
&
regs
,
0
,
NULL
,
NULL
);
return
do_fork
(
SIGCHLD
,
regs
.
regs
[
29
],
0
,
NULL
,
NULL
);
}
}
save_static_function
(
sys_clone
);
save_static_function
(
sys_clone
);
...
@@ -123,7 +123,7 @@ _sys_clone(nabi_no_regargs struct pt_regs regs)
...
@@ -123,7 +123,7 @@ _sys_clone(nabi_no_regargs struct pt_regs regs)
#else
#else
child_tidptr
=
(
int
__user
*
)
regs
.
regs
[
8
];
child_tidptr
=
(
int
__user
*
)
regs
.
regs
[
8
];
#endif
#endif
return
do_fork
(
clone_flags
,
newsp
,
&
regs
,
0
,
return
do_fork
(
clone_flags
,
newsp
,
0
,
parent_tidptr
,
child_tidptr
);
parent_tidptr
,
child_tidptr
);
}
}
...
...
arch/sparc/kernel/process_32.c
View file @
e80d6661
...
@@ -286,8 +286,7 @@ asmlinkage int sparc_do_fork(unsigned long clone_flags,
...
@@ -286,8 +286,7 @@ asmlinkage int sparc_do_fork(unsigned long clone_flags,
parent_tid_ptr
=
regs
->
u_regs
[
UREG_I2
];
parent_tid_ptr
=
regs
->
u_regs
[
UREG_I2
];
child_tid_ptr
=
regs
->
u_regs
[
UREG_I4
];
child_tid_ptr
=
regs
->
u_regs
[
UREG_I4
];
ret
=
do_fork
(
clone_flags
,
stack_start
,
ret
=
do_fork
(
clone_flags
,
stack_start
,
stack_size
,
regs
,
stack_size
,
(
int
__user
*
)
parent_tid_ptr
,
(
int
__user
*
)
parent_tid_ptr
,
(
int
__user
*
)
child_tid_ptr
);
(
int
__user
*
)
child_tid_ptr
);
...
...
arch/sparc/kernel/process_64.c
View file @
e80d6661
...
@@ -601,8 +601,7 @@ asmlinkage long sparc_do_fork(unsigned long clone_flags,
...
@@ -601,8 +601,7 @@ asmlinkage long sparc_do_fork(unsigned long clone_flags,
child_tid_ptr
=
(
int
__user
*
)
regs
->
u_regs
[
UREG_I4
];
child_tid_ptr
=
(
int
__user
*
)
regs
->
u_regs
[
UREG_I4
];
}
}
ret
=
do_fork
(
clone_flags
,
stack_start
,
ret
=
do_fork
(
clone_flags
,
stack_start
,
stack_size
,
regs
,
stack_size
,
parent_tid_ptr
,
child_tid_ptr
);
parent_tid_ptr
,
child_tid_ptr
);
/* If we get an error and potentially restart the system
/* If we get an error and potentially restart the system
...
...
include/linux/sched.h
View file @
e80d6661
...
@@ -2289,7 +2289,7 @@ extern int disallow_signal(int);
...
@@ -2289,7 +2289,7 @@ extern int disallow_signal(int);
extern
int
do_execve
(
const
char
*
,
extern
int
do_execve
(
const
char
*
,
const
char
__user
*
const
__user
*
,
const
char
__user
*
const
__user
*
,
const
char
__user
*
const
__user
*
);
const
char
__user
*
const
__user
*
);
extern
long
do_fork
(
unsigned
long
,
unsigned
long
,
struct
pt_regs
*
,
unsigned
long
,
int
__user
*
,
int
__user
*
);
extern
long
do_fork
(
unsigned
long
,
unsigned
long
,
unsigned
long
,
int
__user
*
,
int
__user
*
);
struct
task_struct
*
fork_idle
(
int
);
struct
task_struct
*
fork_idle
(
int
);
#ifdef CONFIG_GENERIC_KERNEL_THREAD
#ifdef CONFIG_GENERIC_KERNEL_THREAD
extern
pid_t
kernel_thread
(
int
(
*
fn
)(
void
*
),
void
*
arg
,
unsigned
long
flags
);
extern
pid_t
kernel_thread
(
int
(
*
fn
)(
void
*
),
void
*
arg
,
unsigned
long
flags
);
...
...
kernel/fork.c
View file @
e80d6661
...
@@ -1527,8 +1527,6 @@ static inline void init_idle_pids(struct pid_link *links)
...
@@ -1527,8 +1527,6 @@ static inline void init_idle_pids(struct pid_link *links)
struct
task_struct
*
__cpuinit
fork_idle
(
int
cpu
)
struct
task_struct
*
__cpuinit
fork_idle
(
int
cpu
)
{
{
struct
task_struct
*
task
;
struct
task_struct
*
task
;
struct
pt_regs
regs
;
task
=
copy_process
(
CLONE_VM
,
0
,
0
,
NULL
,
&
init_struct_pid
,
0
);
task
=
copy_process
(
CLONE_VM
,
0
,
0
,
NULL
,
&
init_struct_pid
,
0
);
if
(
!
IS_ERR
(
task
))
{
if
(
!
IS_ERR
(
task
))
{
init_idle_pids
(
task
->
pids
);
init_idle_pids
(
task
->
pids
);
...
@@ -1546,7 +1544,6 @@ struct task_struct * __cpuinit fork_idle(int cpu)
...
@@ -1546,7 +1544,6 @@ struct task_struct * __cpuinit fork_idle(int cpu)
*/
*/
long
do_fork
(
unsigned
long
clone_flags
,
long
do_fork
(
unsigned
long
clone_flags
,
unsigned
long
stack_start
,
unsigned
long
stack_start
,
struct
pt_regs
*
regs
,
unsigned
long
stack_size
,
unsigned
long
stack_size
,
int
__user
*
parent_tidptr
,
int
__user
*
parent_tidptr
,
int
__user
*
child_tidptr
)
int
__user
*
child_tidptr
)
...
@@ -1576,7 +1573,7 @@ long do_fork(unsigned long clone_flags,
...
@@ -1576,7 +1573,7 @@ long do_fork(unsigned long clone_flags,
* requested, no event is reported; otherwise, report if the event
* requested, no event is reported; otherwise, report if the event
* for the type of forking is enabled.
* for the type of forking is enabled.
*/
*/
if
(
!
(
clone_flags
&
CLONE_UNTRACED
)
&&
likely
(
user_mode
(
regs
))
)
{
if
(
!
(
clone_flags
&
CLONE_UNTRACED
))
{
if
(
clone_flags
&
CLONE_VFORK
)
if
(
clone_flags
&
CLONE_VFORK
)
trace
=
PTRACE_EVENT_VFORK
;
trace
=
PTRACE_EVENT_VFORK
;
else
if
((
clone_flags
&
CSIGNAL
)
!=
SIGCHLD
)
else
if
((
clone_flags
&
CSIGNAL
)
!=
SIGCHLD
)
...
@@ -1632,7 +1629,7 @@ long do_fork(unsigned long clone_flags,
...
@@ -1632,7 +1629,7 @@ long do_fork(unsigned long clone_flags,
*/
*/
pid_t
kernel_thread
(
int
(
*
fn
)(
void
*
),
void
*
arg
,
unsigned
long
flags
)
pid_t
kernel_thread
(
int
(
*
fn
)(
void
*
),
void
*
arg
,
unsigned
long
flags
)
{
{
return
do_fork
(
flags
|
CLONE_VM
|
CLONE_UNTRACED
,
(
unsigned
long
)
fn
,
NULL
,
return
do_fork
(
flags
|
CLONE_VM
|
CLONE_UNTRACED
,
(
unsigned
long
)
fn
,
(
unsigned
long
)
arg
,
NULL
,
NULL
);
(
unsigned
long
)
arg
,
NULL
,
NULL
);
}
}
#endif
#endif
...
@@ -1641,7 +1638,7 @@ pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
...
@@ -1641,7 +1638,7 @@ pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
SYSCALL_DEFINE0
(
fork
)
SYSCALL_DEFINE0
(
fork
)
{
{
#ifdef CONFIG_MMU
#ifdef CONFIG_MMU
return
do_fork
(
SIGCHLD
,
0
,
current_pt_regs
(),
0
,
NULL
,
NULL
);
return
do_fork
(
SIGCHLD
,
0
,
0
,
NULL
,
NULL
);
#else
#else
/* can not support in nommu mode */
/* can not support in nommu mode */
return
(
-
EINVAL
);
return
(
-
EINVAL
);
...
@@ -1652,7 +1649,7 @@ SYSCALL_DEFINE0(fork)
...
@@ -1652,7 +1649,7 @@ SYSCALL_DEFINE0(fork)
#ifdef __ARCH_WANT_SYS_VFORK
#ifdef __ARCH_WANT_SYS_VFORK
SYSCALL_DEFINE0
(
vfork
)
SYSCALL_DEFINE0
(
vfork
)
{
{
return
do_fork
(
CLONE_VFORK
|
CLONE_VM
|
SIGCHLD
,
0
,
current_pt_regs
(),
return
do_fork
(
CLONE_VFORK
|
CLONE_VM
|
SIGCHLD
,
0
,
0
,
NULL
,
NULL
);
0
,
NULL
,
NULL
);
}
}
#endif
#endif
...
@@ -1675,7 +1672,7 @@ SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp,
...
@@ -1675,7 +1672,7 @@ SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp,
int
,
tls_val
)
int
,
tls_val
)
#endif
#endif
{
{
return
do_fork
(
clone_flags
,
newsp
,
current_pt_regs
(),
0
,
return
do_fork
(
clone_flags
,
newsp
,
0
,
parent_tidptr
,
child_tidptr
);
parent_tidptr
,
child_tidptr
);
}
}
#endif
#endif
...
...
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