]> xenbits.xensource.com Git - xen.git/commitdiff
sched/arinc653: check for guest data transfer failures
authorMatthew Daley <mattjd@gmail.com>
Mon, 23 Sep 2013 14:20:59 +0000 (16:20 +0200)
committerJan Beulich <jbeulich@suse.com>
Mon, 23 Sep 2013 14:20:59 +0000 (16:20 +0200)
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

xen/common/sched_arinc653.c

index 63ddb82bc683fec3564e1434563e898a4b0ab9b7..25021922265076bee033c7c293bd81f5a948f773 100644 (file)
@@ -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;
     }