diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c index 5b5c87f4d8bde96d8452d5bae409cd3fd0a8c17e..d481f3346eb5ba076007f51cb5476a64e6549a10 100644 --- a/arch/x86/kvm/i8259.c +++ b/arch/x86/kvm/i8259.c @@ -484,7 +484,7 @@ static int picdev_write(struct kvm_pic *s, static int picdev_read(struct kvm_pic *s, gpa_t addr, int len, void *val) { - unsigned char data = 0; + unsigned char *data = (unsigned char *)val; if (len != 1) { memset(val, 0, len); @@ -497,19 +497,18 @@ static int picdev_read(struct kvm_pic *s, case 0xa0: case 0xa1: pic_lock(s); - data = pic_ioport_read(&s->pics[addr >> 7], addr); + *data = pic_ioport_read(&s->pics[addr >> 7], addr); pic_unlock(s); break; case 0x4d0: case 0x4d1: pic_lock(s); - data = elcr_ioport_read(&s->pics[addr & 1], addr); + *data = elcr_ioport_read(&s->pics[addr & 1], addr); pic_unlock(s); break; default: return -EOPNOTSUPP; } - *(unsigned char *)val = data; return 0; }