aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Daley <mattjd@gmail.com>2013-09-23 16:20:59 +0200
committerJan Beulich <jbeulich@suse.com>2013-09-23 16:20:59 +0200
commit8a10907615c42b71f1dde01bc190d339e9db051b (patch)
tree473cc6ae09028ab9a142b0a4b39e87efe22ab443
parente36c0917dd54c932816e11a525f294101c77557d (diff)
downloadxen-8a10907615c42b71f1dde01bc190d339e9db051b.tar.gz
xen-8a10907615c42b71f1dde01bc190d339e9db051b.tar.bz2
xen-8a10907615c42b71f1dde01bc190d339e9db051b.zip
sched/arinc653: check for guest data transfer failures
Coverity-ID: 1055121 Coverity-ID: 1055122 Coverity-ID: 1055123 Coverity-ID: 1055124 Signed-off-by: Matthew Daley <mattjd@gmail.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: George Dunlap <george.dunlap@eu.citrix.com> Acked-by: Keir Fraser <keir@xen.org> master commit: 546ba2f17008387cf9821df46e6dac04f0883a9b master date: 2013-09-10 17:16:02 +0200
-rw-r--r--xen/common/sched_arinc653.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/xen/common/sched_arinc653.c b/xen/common/sched_arinc653.c
index 63ddb82bc6..2502192226 100644
--- a/xen/common/sched_arinc653.c
+++ b/xen/common/sched_arinc653.c
@@ -635,12 +635,21 @@ a653sched_adjust_global(const struct scheduler *ops,
switch ( sc->cmd )
{
case XEN_SYSCTL_SCHEDOP_putinfo:
- copy_from_guest(&local_sched, sc->u.sched_arinc653.schedule, 1);
+ if ( copy_from_guest(&local_sched, sc->u.sched_arinc653.schedule, 1) )
+ {
+ rc = -EFAULT;
+ break;
+ }
+
rc = arinc653_sched_set(ops, &local_sched);
break;
case XEN_SYSCTL_SCHEDOP_getinfo:
rc = arinc653_sched_get(ops, &local_sched);
- copy_to_guest(sc->u.sched_arinc653.schedule, &local_sched, 1);
+ if ( rc )
+ break;
+
+ if ( copy_to_guest(sc->u.sched_arinc653.schedule, &local_sched, 1) )
+ rc = -EFAULT;
break;
}