|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v1 09/12] tmem: Check version and maxpools when XEN_SYSCTL_TMEM_SET_CLIENT_INFO
is called. If they are different from what the hypervisor
can support we will get the appropiate errors.
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
---
Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
v1: First submission.
---
tools/libxc/xc_tmem.c | 1 -
xen/common/tmem_control.c | 6 ++++++
xen/include/public/sysctl.h | 5 +++--
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/tools/libxc/xc_tmem.c b/tools/libxc/xc_tmem.c
index cb0dfa1..7873674 100644
--- a/tools/libxc/xc_tmem.c
+++ b/tools/libxc/xc_tmem.c
@@ -383,7 +383,6 @@ int xc_tmem_restore(xc_interface *xch, int dom, int io_fd)
if ( read_exact(io_fd, &info, sizeof(info)) )
return -1;
- /* FIXME check here to ensure no version mismatch or maxpools mismatch */
if ( xc_tmem_control(xch,0,XEN_SYSCTL_TMEM_OP_RESTORE_BEGIN,dom,0,0,NULL)
< 0 )
return -1;
diff --git a/xen/common/tmem_control.c b/xen/common/tmem_control.c
index 942d4c9..6f1de9d 100644
--- a/xen/common/tmem_control.c
+++ b/xen/common/tmem_control.c
@@ -270,6 +270,12 @@ static int __tmemc_set_var(struct client *client,
if ( copy_from_guest(&info, buf, 1) )
return -EFAULT;
+ if ( info.version != TMEM_SPEC_VERSION )
+ return -EOPNOTSUPP;
+
+ if ( info.maxpools > MAX_POOLS_PER_DOMAIN )
+ return -ERANGE;
+
if ( info.weight != client->info.weight )
{
old_weight = client->info.weight;
diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h
index 52898a7..36e2fd8 100644
--- a/xen/include/public/sysctl.h
+++ b/xen/include/public/sysctl.h
@@ -787,8 +787,9 @@ struct tmem_handle {
* during migration.
*/
struct tmem_client {
- uint32_t version;
- uint32_t maxpools;
+ uint32_t version; /* If mismatched we will get XEN_ENOSPC. */
+ uint32_t maxpools; /* If greater than what hypervisor supports, will get
+ XEN_ERANGE. */
union { /* See TMEM_CLIENT_[COMPRESS,FROZEN] */
uint32_t raw;
struct {
--
2.4.11
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |