Messages in this thread Patch in this message | | | Date | Tue, 11 Aug 2009 09:25:24 +0800 | From | JiSheng Zhang <> | Subject | [PATCH] UBI: Fix allocation of volume table |
| |
We can't use vmalloc for the buffer used for volume table for some NAND or NOR drivers may pass the buffer to DMA. And the volume table size a.k.a vtbl_size is small so we can use kmalloc or kzalloc for it instead.
Signed-off-by: JiSheng Zhang <jszhang3@gmail.com> --- drivers/mtd/ubi/vtbl.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/mtd/ubi/vtbl.c b/drivers/mtd/ubi/vtbl.c index 1afc61e..9dcc7ba 100644 --- a/drivers/mtd/ubi/vtbl.c +++ b/drivers/mtd/ubi/vtbl.c @@ -424,12 +424,11 @@ static struct ubi_vtbl_record *process_lvol(struct ubi_device *ubi, /* Read both LEB 0 and LEB 1 into memory */ ubi_rb_for_each_entry(rb, seb, &sv->root, u.rb) { - leb[seb->lnum] = vmalloc(ubi->vtbl_size); + leb[seb->lnum] = kzalloc(ubi->vtbl_size, GFP_KERNEL); if (!leb[seb->lnum]) { err = -ENOMEM; goto out_free; } - memset(leb[seb->lnum], 0, ubi->vtbl_size); err = ubi_io_read_data(ubi, leb[seb->lnum], seb->pnum, 0, ubi->vtbl_size); @@ -515,10 +514,9 @@ static struct ubi_vtbl_record *create_empty_lvol(struct ubi_device *ubi, int i; struct ubi_vtbl_record *vtbl; - vtbl = vmalloc(ubi->vtbl_size); + vtbl = kzalloc(ubi->vtbl_size, GFP_KERNEL); if (!vtbl) return ERR_PTR(-ENOMEM); - memset(vtbl, 0, ubi->vtbl_size); for (i = 0; i < ubi->vtbl_slots; i++) memcpy(&vtbl[i], &empty_vtbl_record, UBI_VTBL_RECORD_SIZE); -- 1.6.3.3
| |