diff options
author | Marc Zyngier <[email protected]> | 2013-11-05 21:21:28 +1030 |
---|---|---|
committer | Rusty Russell <[email protected]> | 2013-11-07 12:13:04 +1030 |
commit | 4ae85370720156025e9cb873c13a0afb06ca1612 (patch) | |
tree | 3f2fc075e48cdfb64df2dd659a3acc656308f18a | |
parent | 2342d6a6512ce5a3d2433bf77e6580e738cfd709 (diff) |
virtio: mmio: fix signature checking for BE guests
As virtio-mmio config registers are specified to be little-endian,
using readl() to read the magic value and then memcmp() to check it
fails on BE (as readl() has an implicit swab).
Fix it by encoding the magic value as an integer instead of a string.
Cc: Michael S. Tsirkin <[email protected]>
Signed-off-by: Marc Zyngier <[email protected]>
Acked-by: Pawel Moll <[email protected]>
Signed-off-by: Rusty Russell <[email protected]>
-rw-r--r-- | drivers/virtio/virtio_mmio.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c index e9fdeb861992..c600ccfd6922 100644 --- a/drivers/virtio/virtio_mmio.c +++ b/drivers/virtio/virtio_mmio.c @@ -471,7 +471,7 @@ static int virtio_mmio_probe(struct platform_device *pdev) /* Check magic value */ magic = readl(vm_dev->base + VIRTIO_MMIO_MAGIC_VALUE); - if (memcmp(&magic, "virt", 4) != 0) { + if (magic != ('v' | 'i' << 8 | 'r' << 16 | 't' << 24)) { dev_warn(&pdev->dev, "Wrong magic value 0x%08lx!\n", magic); return -ENODEV; } |