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
7eddd99c
Commit
7eddd99c
authored
Dec 25, 2012
by
Al Viro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
s390: switch to generic old sigaction()
Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
f036b943
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
3 additions
and
89 deletions
+3
-89
arch/s390/Kconfig
arch/s390/Kconfig
+2
-0
arch/s390/include/asm/signal.h
arch/s390/include/asm/signal.h
+0
-7
arch/s390/kernel/compat_linux.h
arch/s390/kernel/compat_linux.h
+0
-11
arch/s390/kernel/compat_signal.c
arch/s390/kernel/compat_signal.c
+0
-37
arch/s390/kernel/compat_wrapper.S
arch/s390/kernel/compat_wrapper.S
+1
-1
arch/s390/kernel/entry.h
arch/s390/kernel/entry.h
+0
-2
arch/s390/kernel/signal.c
arch/s390/kernel/signal.c
+0
-31
No files found.
arch/s390/Kconfig
View file @
7eddd99c
...
...
@@ -146,6 +146,7 @@ config S390
select GENERIC_COMPAT_RT_SIGPROCMASK
select GENERIC_COMPAT_RT_SIGPENDING
select OLD_SIGSUSPEND3
select OLD_SIGACTION
config SCHED_OMIT_FRAME_POINTER
def_bool y
...
...
@@ -255,6 +256,7 @@ config COMPAT
depends on 64BIT
select COMPAT_BINFMT_ELF if BINFMT_ELF
select ARCH_WANT_OLD_COMPAT_IPC
select COMPAT_OLD_SIGACTION
help
Select this option if you want to enable your system kernel to
handle system-calls from ELF binaries for 31 bit ESA. This option
...
...
arch/s390/include/asm/signal.h
View file @
7eddd99c
...
...
@@ -21,12 +21,5 @@ typedef struct {
unsigned
long
sig
[
_NSIG_WORDS
];
}
sigset_t
;
struct
old_sigaction
{
__sighandler_t
sa_handler
;
old_sigset_t
sa_mask
;
unsigned
long
sa_flags
;
void
(
*
sa_restorer
)(
void
);
};
#define __ARCH_HAS_SA_RESTORER
#endif
arch/s390/kernel/compat_linux.h
View file @
7eddd99c
...
...
@@ -17,13 +17,6 @@ struct ipc_kludge_32 {
__s32
msgtyp
;
};
struct
old_sigaction32
{
__u32
sa_handler
;
/* Really a pointer, but need to deal with 32 bits */
compat_old_sigset_t
sa_mask
;
/* A 32 bit mask */
__u32
sa_flags
;
__u32
sa_restorer
;
/* Another 32 bit pointer */
};
/* asm/sigcontext.h */
typedef
union
{
...
...
@@ -81,8 +74,6 @@ struct ucontext32 {
struct
stat64_emu31
;
struct
mmap_arg_struct_emu31
;
struct
fadvise64_64_args
;
struct
old_sigaction32
;
struct
old_sigaction32
;
long
sys32_chown16
(
const
char
__user
*
filename
,
u16
user
,
u16
group
);
long
sys32_lchown16
(
const
char
__user
*
filename
,
u16
user
,
u16
group
);
...
...
@@ -131,6 +122,4 @@ long sys32_read(unsigned int fd, char __user * buf, size_t count);
long
sys32_write
(
unsigned
int
fd
,
const
char
__user
*
buf
,
size_t
count
);
long
sys32_fadvise64
(
int
fd
,
loff_t
offset
,
size_t
len
,
int
advise
);
long
sys32_fadvise64_64
(
struct
fadvise64_64_args
__user
*
args
);
long
sys32_sigaction
(
int
sig
,
const
struct
old_sigaction32
__user
*
act
,
struct
old_sigaction32
__user
*
oact
);
#endif
/* _ASM_S390X_S390_H */
arch/s390/kernel/compat_signal.c
View file @
7eddd99c
...
...
@@ -157,43 +157,6 @@ int copy_siginfo_from_user32(siginfo_t *to, compat_siginfo_t __user *from)
return
err
;
}
asmlinkage
long
sys32_sigaction
(
int
sig
,
const
struct
old_sigaction32
__user
*
act
,
struct
old_sigaction32
__user
*
oact
)
{
struct
k_sigaction
new_ka
,
old_ka
;
unsigned
long
sa_handler
,
sa_restorer
;
int
ret
;
if
(
act
)
{
compat_old_sigset_t
mask
;
if
(
!
access_ok
(
VERIFY_READ
,
act
,
sizeof
(
*
act
))
||
__get_user
(
sa_handler
,
&
act
->
sa_handler
)
||
__get_user
(
sa_restorer
,
&
act
->
sa_restorer
)
||
__get_user
(
new_ka
.
sa
.
sa_flags
,
&
act
->
sa_flags
)
||
__get_user
(
mask
,
&
act
->
sa_mask
))
return
-
EFAULT
;
new_ka
.
sa
.
sa_handler
=
(
__sighandler_t
)
sa_handler
;
new_ka
.
sa
.
sa_restorer
=
(
void
(
*
)(
void
))
sa_restorer
;
siginitset
(
&
new_ka
.
sa
.
sa_mask
,
mask
);
}
ret
=
do_sigaction
(
sig
,
act
?
&
new_ka
:
NULL
,
oact
?
&
old_ka
:
NULL
);
if
(
!
ret
&&
oact
)
{
sa_handler
=
(
unsigned
long
)
old_ka
.
sa
.
sa_handler
;
sa_restorer
=
(
unsigned
long
)
old_ka
.
sa
.
sa_restorer
;
if
(
!
access_ok
(
VERIFY_WRITE
,
oact
,
sizeof
(
*
oact
))
||
__put_user
(
sa_handler
,
&
oact
->
sa_handler
)
||
__put_user
(
sa_restorer
,
&
oact
->
sa_restorer
)
||
__put_user
(
old_ka
.
sa
.
sa_flags
,
&
oact
->
sa_flags
)
||
__put_user
(
old_ka
.
sa
.
sa_mask
.
sig
[
0
],
&
oact
->
sa_mask
))
return
-
EFAULT
;
}
return
ret
;
}
static
int
save_sigregs32
(
struct
pt_regs
*
regs
,
_sigregs32
__user
*
sregs
)
{
_s390_regs_common32
regs32
;
...
...
arch/s390/kernel/compat_wrapper.S
View file @
7eddd99c
...
...
@@ -230,7 +230,7 @@ ENTRY(sys32_sigaction_wrapper)
lgfr
%
r2
,%
r2
#
int
llgtr
%
r3
,%
r3
#
const
struct
old_sigaction
*
llgtr
%
r4
,%
r4
#
struct
old_sigaction32
*
jg
sys32
_sigaction
#
branch
to
system
call
jg
compat_sys
_sigaction
#
branch
to
system
call
ENTRY
(
sys32_setreuid16_wrapper
)
llgfr
%
r2
,%
r2
#
__kernel_old_uid_emu31_t
...
...
arch/s390/kernel/entry.h
View file @
7eddd99c
...
...
@@ -73,8 +73,6 @@ long sys_s390_fadvise64(int fd, u32 offset_high, u32 offset_low,
long
sys_s390_fadvise64_64
(
struct
fadvise64_64_args
__user
*
args
);
long
sys_s390_fallocate
(
int
fd
,
int
mode
,
loff_t
offset
,
u32
len_high
,
u32
len_low
);
long
sys_sigaction
(
int
sig
,
const
struct
old_sigaction
__user
*
act
,
struct
old_sigaction
__user
*
oact
);
long
sys_sigreturn
(
void
);
long
sys_rt_sigreturn
(
void
);
long
sys32_sigreturn
(
void
);
...
...
arch/s390/kernel/signal.c
View file @
7eddd99c
...
...
@@ -48,37 +48,6 @@ typedef struct
struct
ucontext
uc
;
}
rt_sigframe
;
SYSCALL_DEFINE3
(
sigaction
,
int
,
sig
,
const
struct
old_sigaction
__user
*
,
act
,
struct
old_sigaction
__user
*
,
oact
)
{
struct
k_sigaction
new_ka
,
old_ka
;
int
ret
;
if
(
act
)
{
old_sigset_t
mask
;
if
(
!
access_ok
(
VERIFY_READ
,
act
,
sizeof
(
*
act
))
||
__get_user
(
new_ka
.
sa
.
sa_handler
,
&
act
->
sa_handler
)
||
__get_user
(
new_ka
.
sa
.
sa_restorer
,
&
act
->
sa_restorer
)
||
__get_user
(
new_ka
.
sa
.
sa_flags
,
&
act
->
sa_flags
)
||
__get_user
(
mask
,
&
act
->
sa_mask
))
return
-
EFAULT
;
siginitset
(
&
new_ka
.
sa
.
sa_mask
,
mask
);
}
ret
=
do_sigaction
(
sig
,
act
?
&
new_ka
:
NULL
,
oact
?
&
old_ka
:
NULL
);
if
(
!
ret
&&
oact
)
{
if
(
!
access_ok
(
VERIFY_WRITE
,
oact
,
sizeof
(
*
oact
))
||
__put_user
(
old_ka
.
sa
.
sa_handler
,
&
oact
->
sa_handler
)
||
__put_user
(
old_ka
.
sa
.
sa_restorer
,
&
oact
->
sa_restorer
)
||
__put_user
(
old_ka
.
sa
.
sa_flags
,
&
oact
->
sa_flags
)
||
__put_user
(
old_ka
.
sa
.
sa_mask
.
sig
[
0
],
&
oact
->
sa_mask
))
return
-
EFAULT
;
}
return
ret
;
}
/* Returns non-zero on fault. */
static
int
save_sigregs
(
struct
pt_regs
*
regs
,
_sigregs
__user
*
sregs
)
{
...
...
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