IA64 signal : fix missing error checkings
PATCH 1/1 IA64 signal : fix missing error checkings
Not all the return value of __copy_from_user and__put_user is checked.This patch fixed it.
Signed-off-by Shi Weihua <[email protected]>
---
arch/ia64/kernel/signal.c +4 -4
@@ -98,7 +98,7 @@ restore_sigcontext (struct sigcontext __if ((flags &IA64_SC_FLAG_FPH_VALID ) !=0 ) {struct ia64_psr *psr =ia64_psr (&scr->pt); -__copy_from_user (current->thread.fph, &sc->sc_fr[32 ],96 *16 ); + err |=__copy_from_user (current->thread.fph, &sc->sc_fr[32 ],96 *16 ); psr->mfh =0 ;/* drop signal handler's fph contents... */ preempt_disable ();if (psr->dfh)
@@ -244,7 +244,7 @@ static long setup_sigcontext (struct sigcontext __user *sc, sigset_t *mask, struct sigscratch *scr) { unsigned long flags = 0, ifs, cfm, nat; -long err; +long err =0 ; ifs = scr->pt.cr_ifs;
@@ -257,12 +257,12 @@ setup_sigcontext (struct sigcontext __usia64_flush_fph (current);if ((current->thread.flags &IA64_THREAD_FPH_VALID )) { flags |=IA64_SC_FLAG_FPH_VALID ; -__copy_to_user (&sc->sc_fr[32 ], current->thread.fph,96 *16 ); + err =__copy_to_user (&sc->sc_fr[32 ], current->thread.fph,96 *16 ); } nat =ia64_get_scratch_nat_bits (&scr->pt, scr->scratch_unat); - err =__put_user (flags, &sc->sc_flags); + err |=__put_user (flags, &sc->sc_flags); err |=__put_user (nat, &sc->sc_nat); err |=PUT_SIGSET (mask, &sc->sc_mask); err |=__put_user (cfm, &sc->sc_cfm);