KVM: x86: set data directly in picdev_read()
authorDavid Hildenbrand <david@redhat.com>
Fri, 7 Apr 2017 08:50:39 +0000 (10:50 +0200)
committerRadim Krčmář <rkrcmar@redhat.com>
Wed, 12 Apr 2017 18:17:15 +0000 (20:17 +0200)
Now it looks almost as picdev_write().

Signed-off-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
arch/x86/kvm/i8259.c

index 5b5c87f4d8bde96d8452d5bae409cd3fd0a8c17e..d481f3346eb5ba076007f51cb5476a64e6549a10 100644 (file)
@@ -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;
 }