KVM: Allow kvm_device_ops to be const

Currently a kvm_device_ops structure cannot be const without triggering
compiler warnings. However the structure doesn't need to be written to
and, by marking it const, it can be read-only in memory. Add some more
const keywords to allow this.

Reviewed-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: Steven Price <steven.price@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
This commit is contained in:
Steven Price 2019-10-21 16:28:19 +01:00 committed by Marc Zyngier
parent 8564d6372a
commit 8538cb22bb
2 changed files with 5 additions and 5 deletions

View File

@ -1262,7 +1262,7 @@ extern unsigned int halt_poll_ns_grow_start;
extern unsigned int halt_poll_ns_shrink; extern unsigned int halt_poll_ns_shrink;
struct kvm_device { struct kvm_device {
struct kvm_device_ops *ops; const struct kvm_device_ops *ops;
struct kvm *kvm; struct kvm *kvm;
void *private; void *private;
struct list_head vm_node; struct list_head vm_node;
@ -1315,7 +1315,7 @@ struct kvm_device_ops {
void kvm_device_get(struct kvm_device *dev); void kvm_device_get(struct kvm_device *dev);
void kvm_device_put(struct kvm_device *dev); void kvm_device_put(struct kvm_device *dev);
struct kvm_device *kvm_device_from_filp(struct file *filp); struct kvm_device *kvm_device_from_filp(struct file *filp);
int kvm_register_device_ops(struct kvm_device_ops *ops, u32 type); int kvm_register_device_ops(const struct kvm_device_ops *ops, u32 type);
void kvm_unregister_device_ops(u32 type); void kvm_unregister_device_ops(u32 type);
extern struct kvm_device_ops kvm_mpic_ops; extern struct kvm_device_ops kvm_mpic_ops;

View File

@ -3046,14 +3046,14 @@ struct kvm_device *kvm_device_from_filp(struct file *filp)
return filp->private_data; return filp->private_data;
} }
static struct kvm_device_ops *kvm_device_ops_table[KVM_DEV_TYPE_MAX] = { static const struct kvm_device_ops *kvm_device_ops_table[KVM_DEV_TYPE_MAX] = {
#ifdef CONFIG_KVM_MPIC #ifdef CONFIG_KVM_MPIC
[KVM_DEV_TYPE_FSL_MPIC_20] = &kvm_mpic_ops, [KVM_DEV_TYPE_FSL_MPIC_20] = &kvm_mpic_ops,
[KVM_DEV_TYPE_FSL_MPIC_42] = &kvm_mpic_ops, [KVM_DEV_TYPE_FSL_MPIC_42] = &kvm_mpic_ops,
#endif #endif
}; };
int kvm_register_device_ops(struct kvm_device_ops *ops, u32 type) int kvm_register_device_ops(const struct kvm_device_ops *ops, u32 type)
{ {
if (type >= ARRAY_SIZE(kvm_device_ops_table)) if (type >= ARRAY_SIZE(kvm_device_ops_table))
return -ENOSPC; return -ENOSPC;
@ -3074,7 +3074,7 @@ void kvm_unregister_device_ops(u32 type)
static int kvm_ioctl_create_device(struct kvm *kvm, static int kvm_ioctl_create_device(struct kvm *kvm,
struct kvm_create_device *cd) struct kvm_create_device *cd)
{ {
struct kvm_device_ops *ops = NULL; const struct kvm_device_ops *ops = NULL;
struct kvm_device *dev; struct kvm_device *dev;
bool test = cd->flags & KVM_CREATE_DEVICE_TEST; bool test = cd->flags & KVM_CREATE_DEVICE_TEST;
int type; int type;