OSDN Git Service

KVM: x86: drop picdev_in_range()
authorDavid Hildenbrand <david@redhat.com>
Fri, 7 Apr 2017 08:50:38 +0000 (10:50 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 14 Feb 2020 21:30:00 +0000 (16:30 -0500)
[ Upstream commit 9fecaa9e32ae7370878e5967d8874b6f58360b10 ]

We already have the exact same checks a couple of lines below.

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

index 7cc2360..ce0f29e 100644 (file)
@@ -456,46 +456,33 @@ static u32 elcr_ioport_read(void *opaque, u32 addr1)
        return s->elcr;
 }
 
-static int picdev_in_range(gpa_t addr)
-{
-       switch (addr) {
-       case 0x20:
-       case 0x21:
-       case 0xa0:
-       case 0xa1:
-       case 0x4d0:
-       case 0x4d1:
-               return 1;
-       default:
-               return 0;
-       }
-}
-
 static int picdev_write(struct kvm_pic *s,
                         gpa_t addr, int len, const void *val)
 {
        unsigned char data = *(unsigned char *)val;
-       if (!picdev_in_range(addr))
-               return -EOPNOTSUPP;
 
        if (len != 1) {
                pr_pic_unimpl("non byte write\n");
                return 0;
        }
-       pic_lock(s);
        switch (addr) {
        case 0x20:
        case 0x21:
        case 0xa0:
        case 0xa1:
+               pic_lock(s);
                pic_ioport_write(&s->pics[addr >> 7], addr, data);
+               pic_unlock(s);
                break;
        case 0x4d0:
        case 0x4d1:
+               pic_lock(s);
                elcr_ioport_write(&s->pics[addr & 1], addr, data);
+               pic_unlock(s);
                break;
+       default:
+               return -EOPNOTSUPP;
        }
-       pic_unlock(s);
        return 0;
 }
 
@@ -503,29 +490,31 @@ static int picdev_read(struct kvm_pic *s,
                       gpa_t addr, int len, void *val)
 {
        unsigned char data = 0;
-       if (!picdev_in_range(addr))
-               return -EOPNOTSUPP;
 
        if (len != 1) {
                memset(val, 0, len);
                pr_pic_unimpl("non byte read\n");
                return 0;
        }
-       pic_lock(s);
        switch (addr) {
        case 0x20:
        case 0x21:
        case 0xa0:
        case 0xa1:
+               pic_lock(s);
                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);
+               pic_unlock(s);
                break;
+       default:
+               return -EOPNOTSUPP;
        }
        *(unsigned char *)val = data;
-       pic_unlock(s);
        return 0;
 }