aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2011-10-30 10:17:10 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2011-10-30 10:16:46 -0400
commit399c1d8dbfdcf46977fd2e2a833b02e18a284810 (patch)
treee5e7ceaae180cb58cd59e327ce664b093b7e81f3 /arch/s390
parentc8d1c0ff840bbf06c60ff4235202a4b1457d8f59 (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.c23
-rw-r--r--arch/s390/kernel/compat_signal.c28
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));