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
8f6e29c0
Commit
8f6e29c0
authored
Nov 15, 2003
by
Steve French
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://linux.bkbits.net/linux-2.5
into hostme.bitkeeper.com:/repos/c/cifs/linux-2.5cifs
parents
10fafa39
5ada03a9
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
19 additions
and
17 deletions
+19
-17
arch/i386/kernel/signal.c
arch/i386/kernel/signal.c
+3
-3
arch/ia64/kernel/fsys.S
arch/ia64/kernel/fsys.S
+5
-5
arch/ppc/kernel/entry.S
arch/ppc/kernel/entry.S
+5
-5
arch/ppc/kernel/signal.c
arch/ppc/kernel/signal.c
+6
-4
No files found.
arch/i386/kernel/signal.c
View file @
8f6e29c0
...
...
@@ -132,6 +132,9 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *peax
{
unsigned
int
err
=
0
;
/* Always make any pending restarted system calls return -EINTR */
current_thread_info
()
->
restart_block
.
fn
=
do_no_restart_syscall
;
#define COPY(x) err |= __get_user(regs->x, &sc->x)
#define COPY_SEG(seg) \
...
...
@@ -504,9 +507,6 @@ handle_signal(unsigned long sig, siginfo_t *info, sigset_t *oldset,
{
struct
k_sigaction
*
ka
=
&
current
->
sighand
->
action
[
sig
-
1
];
/* Always make any pending restarted system calls return -EINTR */
current_thread_info
()
->
restart_block
.
fn
=
do_no_restart_syscall
;
/* Are we from a system call? */
if
(
regs
->
orig_eax
>=
0
)
{
/* If so, check system call restarting.. */
...
...
arch/ia64/kernel/fsys.S
View file @
8f6e29c0
...
...
@@ -416,10 +416,10 @@ EX(.fail_efault, ld8 r14=[r33]) // r14 <- *set
;;
ld8
r18
=[
r18
]
//
r18
<-
current
->
pending
.
signal
.
pred.rel.mutex
p6
,
p7
,
p8
(
p6
)
or
r
3
=
r3
,
r14
//
SIG_BLOCK
(
p7
)
andcm
r
3
=
r3
,
r14
//
SIG_UNBLOCK
(
p6
)
or
r
14
=
r3
,
r14
//
SIG_BLOCK
(
p7
)
andcm
r
14
=
r3
,
r14
//
SIG_UNBLOCK
(
p8
)
mov
r
3
=
r14
//
SIG_SETMASK
(
p8
)
mov
r
14
=
r14
//
SIG_SETMASK
(
p6
)
mov
r8
=
0
//
clear
error
code
//
recalc_sigpending
()
add
r17
=
IA64_SIGNAL_GROUP_STOP_COUNT_OFFSET
,
r19
...
...
@@ -437,7 +437,7 @@ EX(.fail_efault, ld8 r14=[r33]) // r14 <- *set
or
r18
=
r18
,
r19
//
r18
<-
current
->
pending
|
current
->
signal
->
shared_pending
;;
//
r18
<-
(
current
->
pending
|
current
->
signal
->
shared_pending
)
&
~
current
->
blocked
:
andcm
r18
=
r18
,
r
3
andcm
r18
=
r18
,
r
14
add
r9
=
TI_FLAGS
+
IA64_TASK_SIZE
,
r16
;;
...
...
@@ -452,7 +452,7 @@ EX(.fail_efault, ld8 r14=[r33]) // r14 <- *set
and
r18
=
~
_TIF_SIGPENDING
,
r17
//
r18
<-
r17
&
~
(
1
<<
TIF_SIGPENDING
)
;;
st8
[
r2
]=
r
3
//
update
current
->
blocked
with
new
mask
st8
[
r2
]=
r
14
//
update
current
->
blocked
with
new
mask
cmpxchg4.acq
r14
=[
r9
],
r18
,
ar
.
ccv
//
current
->
thread_info
->
flags
<-
r18
;;
cmp.ne
p6
,
p0
=
r17
,
r14
//
update
failed
?
...
...
arch/ppc/kernel/entry.S
View file @
8f6e29c0
...
...
@@ -170,8 +170,6 @@ _GLOBAL(DoSyscall)
#ifdef SHOW_SYSCALLS
bl
do_show_syscall
#endif /* SHOW_SYSCALLS */
cmpli
0
,
r0
,
NR_syscalls
bge
-
66
f
rlwinm
r10
,
r1
,
0
,
0
,
18
/*
current_thread_info
()
*/
lwz
r11
,
TI_FLAGS
(
r10
)
rlwinm
r11
,
r11
,
0
,
~
_TIF_FORCE_NOERROR
...
...
@@ -179,9 +177,11 @@ _GLOBAL(DoSyscall)
andi
.
r11
,
r11
,
_TIF_SYSCALL_TRACE
bne
-
syscall_dotrace
syscall_dotrace_cont
:
cmpli
0
,
r0
,
NR_syscalls
lis
r10
,
sys_call_table
@
h
ori
r10
,
r10
,
sys_call_table
@
l
slwi
r0
,
r0
,
2
bge
-
66
f
lwzx
r10
,
r10
,
r0
/*
Fetch
system
call
handler
[
ptr
]
*/
mtlr
r10
addi
r9
,
r1
,
STACK_FRAME_OVERHEAD
...
...
@@ -200,7 +200,7 @@ ret_from_syscall:
andi
.
r11
,
r11
,
_TIF_FORCE_NOERROR
bne
30
f
neg
r3
,
r3
22
:
lwz
r10
,
_CCR
(
r1
)
/*
Set
SO
bit
in
CR
*/
lwz
r10
,
_CCR
(
r1
)
/*
Set
SO
bit
in
CR
*/
oris
r10
,
r10
,
0x1000
stw
r10
,
_CCR
(
r1
)
...
...
@@ -233,8 +233,8 @@ syscall_exit_cont:
SYNC
RFI
66
:
li
r3
,
ENOSYS
b
22
b
66
:
li
r3
,
-
ENOSYS
b
ret_from_syscall
.
globl
ret_from_fork
ret_from_fork
:
...
...
arch/ppc/kernel/signal.c
View file @
8f6e29c0
...
...
@@ -418,6 +418,9 @@ int sys_rt_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8,
{
struct
rt_sigframe
__user
*
rt_sf
;
/* Always make any pending restarted system calls return -EINTR */
current_thread_info
()
->
restart_block
.
fn
=
do_no_restart_syscall
;
rt_sf
=
(
struct
rt_sigframe
__user
*
)
(
regs
->
gpr
[
1
]
+
__SIGNAL_FRAMESIZE
+
16
);
if
(
verify_area
(
VERIFY_READ
,
rt_sf
,
sizeof
(
struct
rt_sigframe
)))
...
...
@@ -513,6 +516,9 @@ int sys_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8,
struct
mcontext
__user
*
sr
;
sigset_t
set
;
/* Always make any pending restarted system calls return -EINTR */
current_thread_info
()
->
restart_block
.
fn
=
do_no_restart_syscall
;
sc
=
(
struct
sigcontext
__user
*
)(
regs
->
gpr
[
1
]
+
__SIGNAL_FRAMESIZE
);
if
(
copy_from_user
(
&
sigctx
,
sc
,
sizeof
(
sigctx
)))
goto
badframe
;
...
...
@@ -569,10 +575,6 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs)
regs
->
result
=
-
EINTR
;
regs
->
gpr
[
3
]
=
EINTR
;
/* note that the cr0.SO bit is already set */
/* clear any restart function that was set */
if
(
ret
==
ERESTART_RESTARTBLOCK
)
current_thread_info
()
->
restart_block
.
fn
=
do_no_restart_syscall
;
}
else
{
regs
->
nip
-=
4
;
/* Back up & retry system call */
regs
->
result
=
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