uint8_t key;
 };
 
-static struct kvm_s390_mem_op ksmo_from_desc(struct mop_desc desc)
+static struct kvm_s390_mem_op ksmo_from_desc(const struct mop_desc *desc)
 {
        struct kvm_s390_mem_op ksmo = {
-               .gaddr = (uintptr_t)desc.gaddr,
-               .size = desc.size,
-               .buf = ((uintptr_t)desc.buf),
+               .gaddr = (uintptr_t)desc->gaddr,
+               .size = desc->size,
+               .buf = ((uintptr_t)desc->buf),
                .reserved = "ignored_ignored_ignored_ignored"
        };
 
-       switch (desc.target) {
+       switch (desc->target) {
        case LOGICAL:
-               if (desc.mode == READ)
+               if (desc->mode == READ)
                        ksmo.op = KVM_S390_MEMOP_LOGICAL_READ;
-               if (desc.mode == WRITE)
+               if (desc->mode == WRITE)
                        ksmo.op = KVM_S390_MEMOP_LOGICAL_WRITE;
                break;
        case SIDA:
-               if (desc.mode == READ)
+               if (desc->mode == READ)
                        ksmo.op = KVM_S390_MEMOP_SIDA_READ;
-               if (desc.mode == WRITE)
+               if (desc->mode == WRITE)
                        ksmo.op = KVM_S390_MEMOP_SIDA_WRITE;
                break;
        case ABSOLUTE:
-               if (desc.mode == READ)
+               if (desc->mode == READ)
                        ksmo.op = KVM_S390_MEMOP_ABSOLUTE_READ;
-               if (desc.mode == WRITE)
+               if (desc->mode == WRITE)
                        ksmo.op = KVM_S390_MEMOP_ABSOLUTE_WRITE;
                break;
        case INVALID:
                ksmo.op = -1;
        }
-       if (desc.f_check)
+       if (desc->f_check)
                ksmo.flags |= KVM_S390_MEMOP_F_CHECK_ONLY;
-       if (desc.f_inject)
+       if (desc->f_inject)
                ksmo.flags |= KVM_S390_MEMOP_F_INJECT_EXCEPTION;
-       if (desc._set_flags)
-               ksmo.flags = desc.set_flags;
-       if (desc.f_key) {
+       if (desc->_set_flags)
+               ksmo.flags = desc->set_flags;
+       if (desc->f_key) {
                ksmo.flags |= KVM_S390_MEMOP_F_SKEY_PROTECTION;
-               ksmo.key = desc.key;
+               ksmo.key = desc->key;
        }
-       if (desc._ar)
-               ksmo.ar = desc.ar;
+       if (desc->_ar)
+               ksmo.ar = desc->ar;
        else
                ksmo.ar = 0;
-       if (desc._sida_offset)
-               ksmo.sida_offset = desc.sida_offset;
+       if (desc->_sida_offset)
+               ksmo.sida_offset = desc->sida_offset;
 
        return ksmo;
 }
                else                                                            \
                        __desc.gaddr = __desc.gaddr_v;                          \
        }                                                                       \
-       __ksmo = ksmo_from_desc(__desc);                                        \
+       __ksmo = ksmo_from_desc(&__desc);                                       \
        print_memop(__info.vcpu, &__ksmo);                                      \
        err##memop_ioctl(__info, &__ksmo);                                      \
 })