[Top][All Lists]
[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) {