aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2017-09-04 12:37:53 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2017-09-19 17:56:06 -0400
commit7bea578b5f0c44c974a585bfbe6422065b9f6b6d (patch)
treefd165f1fb0e52fd025514697e1209c2e52966809
parent68c38fb6acb12f007785c53a7367fc9de8e34745 (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.h37
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 @@
13static inline int __copy_conv_sigset_to_user(compat_sigset_t __user *d, 13static 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
29static inline int __copy_conv_sigset_from_user(sigset_t *d, 22static 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 */