[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-stable] [PATCH v6 5/5] stellaris_enet: block migration
From: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-stable] [PATCH v6 5/5] stellaris_enet: block migration |
Date: |
Mon, 28 Apr 2014 16:13:29 +0300 |
On Mon, Apr 28, 2014 at 04:08:26PM +0300, Michael S. Tsirkin wrote:
> Incoming migration with stellaris_enet is unsafe.
> It's being reworked, but for now, simply block it
> since noone is using it anyway.
> Block outgoing migration for good measure.
>
> CVE-2013-4532
>
> Signed-off-by: Michael S. Tsirkin <address@hidden>
Note: this one is here so we can backport it to qemu-stable.
2.1 will have the code rewritten so no real need for this patch.
> ---
> hw/net/stellaris_enet.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/hw/net/stellaris_enet.c b/hw/net/stellaris_enet.c
> index d04e6a4..3b2f83f 100644
> --- a/hw/net/stellaris_enet.c
> +++ b/hw/net/stellaris_enet.c
> @@ -8,6 +8,7 @@
> */
> #include "hw/sysbus.h"
> #include "net/net.h"
> +#include "migration/migration.h"
> #include <zlib.h>
>
> //#define DEBUG_STELLARIS_ENET 1
> @@ -75,6 +76,7 @@ typedef struct {
> NICConf conf;
> qemu_irq irq;
> MemoryRegion mmio;
> + Error *migration_blocker;
> } stellaris_enet_state;
>
> static void stellaris_enet_update(stellaris_enet_state *s)
> @@ -360,7 +362,7 @@ static int stellaris_enet_load(QEMUFile *f, void *opaque,
> int version_id)
> stellaris_enet_state *s = (stellaris_enet_state *)opaque;
> int i;
>
> - if (version_id != 1)
> + if (1)
> return -EINVAL;
>
> s->ris = qemu_get_be32(f);
> @@ -421,6 +423,10 @@ static int stellaris_enet_init(SysBusDevice *sbd)
> stellaris_enet_reset(s);
> register_savevm(dev, "stellaris_enet", -1, 1,
> stellaris_enet_save, stellaris_enet_load, s);
> +
> + error_setg(&s->migration_blocker,
> + "stellaris_enet does not support migration");
> + migrate_add_blocker(s->migration_blocker);
> return 0;
> }
>
> @@ -428,6 +434,9 @@ static void stellaris_enet_unrealize(DeviceState *dev,
> Error **errp)
> {
> stellaris_enet_state *s = STELLARIS_ENET(dev);
>
> + migrate_del_blocker(s->migration_blocker);
> + error_free(s->migration_blocker);
> +
> unregister_savevm(DEVICE(s), "stellaris_enet", s);
>
> memory_region_destroy(&s->mmio);
> --
> MST
>