File valgrind.xen-4.10-handle-all-versioned-sysctl-ops.patch of Package valgrind

From: Olaf Hering <olaf@aepfle.de>
Date: Sun, 25 Nov 2018 01:33:58 +0100
Subject: xen-4.10: handle all versioned sysctl ops

When support for a new sysctl version is added, all versioned ops must be adjusted.

Fixes commit c88133141a354d65568fb85037abc5e1f74ce46b.

bz#390553
---
 coregrind/m_syswrap/syswrap-xen.c | 8 ++++++++
 1 file changed, 8 insertions(+)

--- a/coregrind/m_syswrap/syswrap-xen.c
+++ b/coregrind/m_syswrap/syswrap-xen.c
@@ -784,72 +784,76 @@ PRE(sysctl) {
       case 0x00000009:
       case 0x0000000a:
       case 0x0000000b:
          PRE_XEN_SYSCTL_READ(topologyinfo, max_cpu_index);
          PRE_XEN_SYSCTL_READ(topologyinfo, cpu_to_core);
          PRE_XEN_SYSCTL_READ(topologyinfo, cpu_to_socket);
          PRE_XEN_SYSCTL_READ(topologyinfo, cpu_to_node);
          break;
       case 0x0000000c:
       case 0x0000000d:
       case 0x0000000e:
       case 0x0000000f:
+      case 0x00000010:
          PRE_XEN_SYSCTL_READ(cputopoinfo_0000000c, num_cpus);
          PRE_XEN_SYSCTL_READ(cputopoinfo_0000000c, cputopo);
          break;
       }
       break;
 
    case VKI_XEN_SYSCTL_numainfo:
       switch (sysctl->interface_version)
       {
       case 0x00000008:
       case 0x00000009:
       case 0x0000000a:
       case 0x0000000b:
          PRE_XEN_SYSCTL_READ(numainfo_00000008, max_node_index);
          PRE_XEN_SYSCTL_READ(numainfo_00000008, node_to_memsize);
          PRE_XEN_SYSCTL_READ(numainfo_00000008, node_to_memfree);
          PRE_XEN_SYSCTL_READ(numainfo_00000008, node_to_node_distance);
          break;
       case 0x0000000c:
       case 0x0000000d:
       case 0x0000000e:
       case 0x0000000f:
+      case 0x00000010:
          PRE_XEN_SYSCTL_READ(numainfo_0000000c, num_nodes);
          PRE_XEN_SYSCTL_READ(numainfo_0000000c, meminfo);
          PRE_XEN_SYSCTL_READ(numainfo_0000000c, distance);
          break;
       }
       break;
 
    case VKI_XEN_SYSCTL_pcitopoinfo:
       switch (sysctl->interface_version)
       {
       case 0x0000000c:
       case 0x0000000d:
       case 0x0000000e:
       case 0x0000000f:
+      case 0x00000010:
          PRE_XEN_SYSCTL_READ(pcitopoinfo_0000000c, num_devs);
          PRE_XEN_SYSCTL_READ(pcitopoinfo_0000000c, devs);
          break;
       }
       break;
 
    case VKI_XEN_SYSCTL_get_cpu_featureset:
       switch (sysctl->interface_version)
       {
       case 0x0000000d:
       case 0x0000000e:
       case 0x0000000f:
+      case 0x00000010:
          PRE_XEN_SYSCTL_READ(cpu_featureset_0000000d, index);
          PRE_XEN_SYSCTL_READ(cpu_featureset_0000000d, nr_features);
          break;
       }
       break;
 
    default:
       bad_subop(tid, layout, arrghs, status, flags,
                 "__HYPERVISOR_sysctl", sysctl->cmd);
       break;
    }
 #undef PRE_XEN_SYSCTL_READ
@@ -2351,24 +2355,25 @@ POST(sysctl)
                            sizeof(uint32_t) * sysctl->u.topologyinfo.max_cpu_index);
          if (sysctl->u.topologyinfo.cpu_to_socket.p)
             POST_MEM_WRITE((Addr)sysctl->u.topologyinfo.cpu_to_socket.p,
                            sizeof(uint32_t) * sysctl->u.topologyinfo.max_cpu_index);
          if (sysctl->u.topologyinfo.cpu_to_node.p)
             POST_MEM_WRITE((Addr)sysctl->u.topologyinfo.cpu_to_node.p,
                            sizeof(uint32_t) * sysctl->u.topologyinfo.max_cpu_index);
          break;
       case 0x0000000c:
       case 0x0000000d:
       case 0x0000000e:
       case 0x0000000f:
+      case 0x00000010:
          POST_XEN_SYSCTL_WRITE(cputopoinfo_0000000c, num_cpus);
          if (sysctl->u.cputopoinfo_0000000c.cputopo.p)
             POST_MEM_WRITE((Addr)sysctl->u.cputopoinfo_0000000c.cputopo.p,
                            sizeof(vki_xen_sysctl_cputopo_0000000c_t) * sysctl->u.cputopoinfo_0000000c.num_cpus);
          break;
       }
       break;
 
    case VKI_XEN_SYSCTL_numainfo:
       switch (sysctl->interface_version)
       {
       case 0x00000008:
@@ -2379,54 +2384,57 @@ POST(sysctl)
          POST_MEM_WRITE((Addr)sysctl->u.numainfo_00000008.node_to_memsize.p,
                         sizeof(uint64_t) * sysctl->u.numainfo_00000008.max_node_index);
          POST_MEM_WRITE((Addr)sysctl->u.numainfo_00000008.node_to_memfree.p,
                         sizeof(uint64_t) * sysctl->u.numainfo_00000008.max_node_index);
          POST_MEM_WRITE((Addr)sysctl->u.numainfo_00000008.node_to_node_distance.p,
                         sizeof(uint32_t) *
                         (sysctl->u.numainfo_00000008.max_node_index * sysctl->u.numainfo_00000008.max_node_index));
          break;
       case 0x0000000c:
       case 0x0000000d:
       case 0x0000000e:
       case 0x0000000f:
+      case 0x00000010:
          POST_XEN_SYSCTL_WRITE(numainfo_0000000c, num_nodes);
          POST_MEM_WRITE((Addr)sysctl->u.numainfo_0000000c.meminfo.p,
                         sizeof(uint64_t) * sysctl->u.numainfo_0000000c.num_nodes);
          POST_MEM_WRITE((Addr)sysctl->u.numainfo_0000000c.distance.p,
                         sizeof(uint32_t) *
 			(sysctl->u.numainfo_0000000c.num_nodes * sysctl->u.numainfo_0000000c.num_nodes));
          break;
       }
       break;
 
    case VKI_XEN_SYSCTL_pcitopoinfo:
       switch (sysctl->interface_version)
       {
       case 0x0000000c:
       case 0x0000000d:
       case 0x0000000e:
       case 0x0000000f:
+      case 0x00000010:
          POST_XEN_SYSCTL_WRITE(pcitopoinfo_0000000c, num_devs);
          POST_MEM_WRITE((Addr)sysctl->u.pcitopoinfo_0000000c.nodes.p,
                         sizeof(uint32_t) *  sysctl->u.pcitopoinfo_0000000c.num_devs);
          break;
       }
       break;
 
    case VKI_XEN_SYSCTL_get_cpu_featureset:
       switch (sysctl->interface_version)
       {
       case 0x0000000d:
       case 0x0000000e:
       case 0x0000000f:
+      case 0x00000010:
          POST_XEN_SYSCTL_WRITE(cpu_featureset_0000000d, nr_features);
          POST_MEM_WRITE((Addr)sysctl->u.cpu_featureset_0000000d.features.p,
                         sizeof(uint32_t) *  sysctl->u.cpu_featureset_0000000d.nr_features);
          break;
       }
       break;
 
    /* No outputs */
    case VKI_XEN_SYSCTL_debug_keys:
        break;
    }
 #undef POST_XEN_SYSCTL_WRITE
openSUSE Build Service is sponsored by