diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2017-09-04 12:37:53 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2017-09-19 17:56:06 -0400 |
commit | 7bea578b5f0c44c974a585bfbe6422065b9f6b6d (patch) | |
tree | fd165f1fb0e52fd025514697e1209c2e52966809 | |
parent | 68c38fb6acb12f007785c53a7367fc9de8e34745 (diff) |
mips: switch to {get,put}_compat_sigset()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | arch/mips/include/asm/compat-signal.h | 37 |
1 files changed, 4 insertions, 33 deletions
diff --git a/arch/mips/include/asm/compat-signal.h b/arch/mips/include/asm/compat-signal.h index 4c6176467146..1705b7769f75 100644 --- a/arch/mips/include/asm/compat-signal.h +++ b/arch/mips/include/asm/compat-signal.h | |||
@@ -13,45 +13,16 @@ | |||
13 | static inline int __copy_conv_sigset_to_user(compat_sigset_t __user *d, | 13 | static inline int __copy_conv_sigset_to_user(compat_sigset_t __user *d, |
14 | const sigset_t *s) | 14 | const sigset_t *s) |
15 | { | 15 | { |
16 | int err; | 16 | BUILD_BUG_ON(sizeof(*d) != sizeof(*s)); |
17 | BUILD_BUG_ON(_NSIG_WORDS != 2); | ||
17 | 18 | ||
18 | BUG_ON(sizeof(*d) != sizeof(*s)); | 19 | return put_compat_sigset(d, s, sizeof(*d)); |
19 | BUG_ON(_NSIG_WORDS != 2); | ||
20 | |||
21 | err = __put_user(s->sig[0], &d->sig[0]); | ||
22 | err |= __put_user(s->sig[0] >> 32, &d->sig[1]); | ||
23 | err |= __put_user(s->sig[1], &d->sig[2]); | ||
24 | err |= __put_user(s->sig[1] >> 32, &d->sig[3]); | ||
25 | |||
26 | return err; | ||
27 | } | 20 | } |
28 | 21 | ||
29 | static inline int __copy_conv_sigset_from_user(sigset_t *d, | 22 | static inline int __copy_conv_sigset_from_user(sigset_t *d, |
30 | const compat_sigset_t __user *s) | 23 | const compat_sigset_t __user *s) |
31 | { | 24 | { |
32 | int err; | 25 | return get_compat_sigset(d, s); |
33 | union sigset_u { | ||
34 | sigset_t s; | ||
35 | compat_sigset_t c; | ||
36 | } *u = (union sigset_u *) d; | ||
37 | |||
38 | BUG_ON(sizeof(*d) != sizeof(*s)); | ||
39 | BUG_ON(_NSIG_WORDS != 2); | ||
40 | |||
41 | #ifdef CONFIG_CPU_BIG_ENDIAN | ||
42 | err = __get_user(u->c.sig[1], &s->sig[0]); | ||
43 | err |= __get_user(u->c.sig[0], &s->sig[1]); | ||
44 | err |= __get_user(u->c.sig[3], &s->sig[2]); | ||
45 | err |= __get_user(u->c.sig[2], &s->sig[3]); | ||
46 | #endif | ||
47 | #ifdef CONFIG_CPU_LITTLE_ENDIAN | ||
48 | err = __get_user(u->c.sig[0], &s->sig[0]); | ||
49 | err |= __get_user(u->c.sig[1], &s->sig[1]); | ||
50 | err |= __get_user(u->c.sig[2], &s->sig[2]); | ||
51 | err |= __get_user(u->c.sig[3], &s->sig[3]); | ||
52 | #endif | ||
53 | |||
54 | return err; | ||
55 | } | 26 | } |
56 | 27 | ||
57 | #endif /* __ASM_COMPAT_SIGNAL_H */ | 28 | #endif /* __ASM_COMPAT_SIGNAL_H */ |