qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 1/2] hw/nand: reject read-only drives


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH 1/2] hw/nand: reject read-only drives
Date: Wed, 19 Oct 2011 18:56:13 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

address@hidden writes:

> From: Juha Riihimäki <address@hidden>
>
> Signed-off-by: Juha Riihimäki <address@hidden>
> ---
>  hw/nand.c |   23 +++++++++++++++--------
>  1 files changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/hw/nand.c b/hw/nand.c
> index c27783e..da6529d 100644
> --- a/hw/nand.c
> +++ b/hw/nand.c
> @@ -19,6 +19,7 @@
>  # include "flash.h"
>  # include "blockdev.h"
>  # include "sysbus.h"
> +#include "qemu-error.h"
>  
>  # define NAND_CMD_READ0              0x00
>  # define NAND_CMD_READ1              0x01
> @@ -384,18 +385,24 @@ static int nand_device_init(SysBusDevice *dev)
>          nand_init_2048(s);
>          break;
>      default:
> -        hw_error("%s: Unsupported NAND block size.\n", __func__);
> +        error_report("Unsupported NAND block size");
> +        return -1;

Not mentioned in commit message.  Separate patch?

>      }
>  
> -    pagesize = 1 << s->oob_shift;
>      s->mem_oob = 1;
> -    if (s->bdrv && bdrv_getlength(s->bdrv) >=
> +    if (s->bdrv) {
> +        if (bdrv_is_read_only(s->bdrv)) {
> +            error_report("Can't use a read-only drive");
> +            return -1;
> +        }
> +        if (bdrv_getlength(s->bdrv) >=
>              (s->pages << s->page_shift) + (s->pages << s->oob_shift)) {
> -        pagesize = 0;
> -        s->mem_oob = 0;
> -    }
> -
> -    if (!s->bdrv) {
> +            pagesize = 0;
> +            s->mem_oob = 0;
> +        } else {
> +            pagesize = 1 << s->oob_shift;
> +        }
> +    } else {
>          pagesize += 1 << s->page_shift;

Doesn't this use pagesize uninitialized?

>      }
>      if (pagesize) {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]