aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2012-12-06 11:10:15 +0100
committerJan Beulich <jbeulich@suse.com>2012-12-06 11:10:15 +0100
commit4cf85f33a7a564a40edc7ef961d02c342dc42b40 (patch)
treea991807ba2be4071d8a683cb6752e60eb0ec7627
parentcd7dc899a6dad96aa3df23e29c55110eb18e3ec3 (diff)
downloadxen-4cf85f33a7a564a40edc7ef961d02c342dc42b40.tar.gz
xen-4cf85f33a7a564a40edc7ef961d02c342dc42b40.tar.bz2
xen-4cf85f33a7a564a40edc7ef961d02c342dc42b40.zip
ACPI: fix return value of XEN_PM_PDC platform op
Should return -EFAULT when copying to guest memory fails. Once touching this code, also switch to using the more relaxed copy function (copying from the same guest memory already validated the virtual address range). Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org> xen-unstable changeset: 26196:5faf5b8b702e xen-unstable date: Wed Nov 28 09:03:51 UTC 2012
-rw-r--r--xen/drivers/acpi/pmstat.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/xen/drivers/acpi/pmstat.c b/xen/drivers/acpi/pmstat.c
index 909426901f..336966c368 100644
--- a/xen/drivers/acpi/pmstat.c
+++ b/xen/drivers/acpi/pmstat.c
@@ -523,8 +523,8 @@ int acpi_set_pdc_bits(u32 acpi_id, XEN_GUEST_HANDLE(uint32) pdc)
ACPI_PDC_SMP_C1PT) & ~mask;
ret = arch_acpi_set_pdc_bits(acpi_id, bits, mask);
}
- if ( !ret )
- ret = copy_to_guest_offset(pdc, 2, bits + 2, 1);
+ if ( !ret && __copy_to_guest_offset(pdc, 2, bits + 2, 1) )
+ ret = -EFAULT;
return ret;
}