aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common
diff options
context:
space:
mode:
authorMatthew Daley <mattjd@gmail.com>2013-09-10 17:16:02 +0200
committerJan Beulich <jbeulich@suse.com>2013-09-10 17:16:02 +0200
commit546ba2f17008387cf9821df46e6dac04f0883a9b (patch)
treebc0b228c04c8527782b1eae7ff4c52c996fcb2e6 /xen/common
parent26d8a37c598464cd097fac42640dbf02c4f405f7 (diff)
downloadxen-546ba2f17008387cf9821df46e6dac04f0883a9b.tar.gz
xen-546ba2f17008387cf9821df46e6dac04f0883a9b.tar.bz2
xen-546ba2f17008387cf9821df46e6dac04f0883a9b.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>
Diffstat (limited to 'xen/common')
-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;
}