Re: [PATCH 3.11-stable] virtio: mmio: fix signature checking for BE guests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jonghwan Choi <jhbird.choi@xxxxxxxxxxx> writes:
> This patch looks like it should be in the 3.11-stable tree, should we apply
> it?

No.  Supporting BE on virtio_mmio is in fact a new feature.  And this
doesn't make it work anyway.

Grumble,
Rusty.

> ------------------
>
> From: "Marc Zyngier <marc.zyngier@xxxxxxx>"
>
> commit 4ae85370720156025e9cb873c13a0afb06ca1612 upstream
>
> 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 <mst@xxxxxxxxxx>
> Signed-off-by: Marc Zyngier <marc.zyngier@xxxxxxx>
> Acked-by: Pawel Moll <pawel.moll@xxxxxxx>
> Signed-off-by: Rusty Russell <rusty@xxxxxxxxxxxxxxx>
> Signed-off-by: Jonghwan Choi <jhbird.choi@xxxxxxxxxxx>
> ---
>  drivers/virtio/virtio_mmio.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
> index 1ba0d68..57f24fd 100644
> --- a/drivers/virtio/virtio_mmio.c
> +++ b/drivers/virtio/virtio_mmio.c
> @@ -470,7 +470,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;
>  	}
> -- 
> 1.7.9.5
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]