diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-10-30 10:17:10 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-10-30 10:16:46 -0400 |
commit | 399c1d8dbfdcf46977fd2e2a833b02e18a284810 (patch) | |
tree | e5e7ceaae180cb58cd59e327ce664b093b7e81f3 /arch/s390 | |
parent | c8d1c0ff840bbf06c60ff4235202a4b1457d8f59 (diff) |
[S390] sparse: fix access past end of array warnings
Remove unnecessary code to avoid false positives from sparse, e.g.
arch/s390/kernel/compat_signal.c:221:61: warning: invalid access past the end of 'set32' (8 8)
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/kernel/compat_linux.c | 23 | ||||
-rw-r--r-- | arch/s390/kernel/compat_signal.c | 28 |
2 files changed, 9 insertions, 42 deletions
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c index 24b218737b9b..84a982898448 100644 --- a/arch/s390/kernel/compat_linux.c +++ b/arch/s390/kernel/compat_linux.c | |||
@@ -362,12 +362,7 @@ asmlinkage long sys32_rt_sigprocmask(int how, compat_sigset_t __user *set, | |||
362 | if (set) { | 362 | if (set) { |
363 | if (copy_from_user (&s32, set, sizeof(compat_sigset_t))) | 363 | if (copy_from_user (&s32, set, sizeof(compat_sigset_t))) |
364 | return -EFAULT; | 364 | return -EFAULT; |
365 | switch (_NSIG_WORDS) { | 365 | s.sig[0] = s32.sig[0] | (((long)s32.sig[1]) << 32); |
366 | case 4: s.sig[3] = s32.sig[6] | (((long)s32.sig[7]) << 32); | ||
367 | case 3: s.sig[2] = s32.sig[4] | (((long)s32.sig[5]) << 32); | ||
368 | case 2: s.sig[1] = s32.sig[2] | (((long)s32.sig[3]) << 32); | ||
369 | case 1: s.sig[0] = s32.sig[0] | (((long)s32.sig[1]) << 32); | ||
370 | } | ||
371 | } | 366 | } |
372 | set_fs (KERNEL_DS); | 367 | set_fs (KERNEL_DS); |
373 | ret = sys_rt_sigprocmask(how, | 368 | ret = sys_rt_sigprocmask(how, |
@@ -377,12 +372,8 @@ asmlinkage long sys32_rt_sigprocmask(int how, compat_sigset_t __user *set, | |||
377 | set_fs (old_fs); | 372 | set_fs (old_fs); |
378 | if (ret) return ret; | 373 | if (ret) return ret; |
379 | if (oset) { | 374 | if (oset) { |
380 | switch (_NSIG_WORDS) { | 375 | s32.sig[1] = (s.sig[0] >> 32); |
381 | case 4: s32.sig[7] = (s.sig[3] >> 32); s32.sig[6] = s.sig[3]; | 376 | s32.sig[0] = s.sig[0]; |
382 | case 3: s32.sig[5] = (s.sig[2] >> 32); s32.sig[4] = s.sig[2]; | ||
383 | case 2: s32.sig[3] = (s.sig[1] >> 32); s32.sig[2] = s.sig[1]; | ||
384 | case 1: s32.sig[1] = (s.sig[0] >> 32); s32.sig[0] = s.sig[0]; | ||
385 | } | ||
386 | if (copy_to_user (oset, &s32, sizeof(compat_sigset_t))) | 377 | if (copy_to_user (oset, &s32, sizeof(compat_sigset_t))) |
387 | return -EFAULT; | 378 | return -EFAULT; |
388 | } | 379 | } |
@@ -401,12 +392,8 @@ asmlinkage long sys32_rt_sigpending(compat_sigset_t __user *set, | |||
401 | ret = sys_rt_sigpending((sigset_t __force __user *) &s, sigsetsize); | 392 | ret = sys_rt_sigpending((sigset_t __force __user *) &s, sigsetsize); |
402 | set_fs (old_fs); | 393 | set_fs (old_fs); |
403 | if (!ret) { | 394 | if (!ret) { |
404 | switch (_NSIG_WORDS) { | 395 | s32.sig[1] = (s.sig[0] >> 32); |
405 | case 4: s32.sig[7] = (s.sig[3] >> 32); s32.sig[6] = s.sig[3]; | 396 | s32.sig[0] = s.sig[0]; |
406 | case 3: s32.sig[5] = (s.sig[2] >> 32); s32.sig[4] = s.sig[2]; | ||
407 | case 2: s32.sig[3] = (s.sig[1] >> 32); s32.sig[2] = s.sig[1]; | ||
408 | case 1: s32.sig[1] = (s.sig[0] >> 32); s32.sig[0] = s.sig[0]; | ||
409 | } | ||
410 | if (copy_to_user (set, &s32, sizeof(compat_sigset_t))) | 397 | if (copy_to_user (set, &s32, sizeof(compat_sigset_t))) |
411 | return -EFAULT; | 398 | return -EFAULT; |
412 | } | 399 | } |
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c index a1dc6457016c..c68ea9c18046 100644 --- a/arch/s390/kernel/compat_signal.c +++ b/arch/s390/kernel/compat_signal.c | |||
@@ -213,16 +213,8 @@ sys32_rt_sigaction(int sig, const struct sigaction32 __user *act, | |||
213 | ret = get_user(sa_handler, &act->sa_handler); | 213 | ret = get_user(sa_handler, &act->sa_handler); |
214 | ret |= __copy_from_user(&set32, &act->sa_mask, | 214 | ret |= __copy_from_user(&set32, &act->sa_mask, |
215 | sizeof(compat_sigset_t)); | 215 | sizeof(compat_sigset_t)); |
216 | switch (_NSIG_WORDS) { | 216 | new_ka.sa.sa_mask.sig[0] = |
217 | case 4: new_ka.sa.sa_mask.sig[3] = set32.sig[6] | 217 | set32.sig[0] | (((long)set32.sig[1]) << 32); |
218 | | (((long)set32.sig[7]) << 32); | ||
219 | case 3: new_ka.sa.sa_mask.sig[2] = set32.sig[4] | ||
220 | | (((long)set32.sig[5]) << 32); | ||
221 | case 2: new_ka.sa.sa_mask.sig[1] = set32.sig[2] | ||
222 | | (((long)set32.sig[3]) << 32); | ||
223 | case 1: new_ka.sa.sa_mask.sig[0] = set32.sig[0] | ||
224 | | (((long)set32.sig[1]) << 32); | ||
225 | } | ||
226 | ret |= __get_user(new_ka.sa.sa_flags, &act->sa_flags); | 218 | ret |= __get_user(new_ka.sa.sa_flags, &act->sa_flags); |
227 | 219 | ||
228 | if (ret) | 220 | if (ret) |
@@ -233,20 +225,8 @@ sys32_rt_sigaction(int sig, const struct sigaction32 __user *act, | |||
233 | ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); | 225 | ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); |
234 | 226 | ||
235 | if (!ret && oact) { | 227 | if (!ret && oact) { |
236 | switch (_NSIG_WORDS) { | 228 | set32.sig[1] = (old_ka.sa.sa_mask.sig[0] >> 32); |
237 | case 4: | 229 | set32.sig[0] = old_ka.sa.sa_mask.sig[0]; |
238 | set32.sig[7] = (old_ka.sa.sa_mask.sig[3] >> 32); | ||
239 | set32.sig[6] = old_ka.sa.sa_mask.sig[3]; | ||
240 | case 3: | ||
241 | set32.sig[5] = (old_ka.sa.sa_mask.sig[2] >> 32); | ||
242 | set32.sig[4] = old_ka.sa.sa_mask.sig[2]; | ||
243 | case 2: | ||
244 | set32.sig[3] = (old_ka.sa.sa_mask.sig[1] >> 32); | ||
245 | set32.sig[2] = old_ka.sa.sa_mask.sig[1]; | ||
246 | case 1: | ||
247 | set32.sig[1] = (old_ka.sa.sa_mask.sig[0] >> 32); | ||
248 | set32.sig[0] = old_ka.sa.sa_mask.sig[0]; | ||
249 | } | ||
250 | ret = put_user((unsigned long)old_ka.sa.sa_handler, &oact->sa_handler); | 230 | ret = put_user((unsigned long)old_ka.sa.sa_handler, &oact->sa_handler); |
251 | ret |= __copy_to_user(&oact->sa_mask, &set32, | 231 | ret |= __copy_to_user(&oact->sa_mask, &set32, |
252 | sizeof(compat_sigset_t)); | 232 | sizeof(compat_sigset_t)); |