Changeset 17802


Ignore:
Timestamp:
10/22/11 16:07:09 (19 months ago)
Author:
BrainSlayer
Message:

use vmalloc instead of kmalloc, since there isnt enough free unframented memory free on some devices

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/laguna/linux-3.0/drivers/mtd/maps/nvram_kernel.c

    r17371 r17802  
    1414#include <linux/mtd/mtd.h> 
    1515#include <linux/mm.h> 
     16#include <linux/vmalloc.h> 
    1617//#include <asm/addrspace.h> 
    1718#include <asm/io.h> 
     
    142143 
    143144        if (!t) { 
    144                 if (!(t = kmalloc(sizeof(struct nvram_tuple) + strlen(name) + 1, GFP_ATOMIC))) 
     145                if (!(t = vmalloc(sizeof(struct nvram_tuple) + strlen(name) + 1))) 
    145146                        return NULL; 
    146147 
     
    168169                nvram_offset = 0; 
    169170        else 
    170                 kfree(t); 
     171                vfree(t); 
    171172} 
    172173 
     
    181182        if ((ret = _nvram_set(name, value))) { 
    182183                /* Consolidate space and try again */ 
    183                 if ((header = kmalloc(NVRAM_SPACE, GFP_ATOMIC))) { 
     184                if ((header = vmalloc(NVRAM_SPACE))) { 
    184185                        if (_nvram_commit(header) == 0) 
    185186                                ret = _nvram_set(name, value); 
    186                         kfree(header); 
     187                        vfree(header); 
    187188                } 
    188189        } 
     
    261262        /* Backup sector blocks to be erased */ 
    262263        erasesize = ROUNDUP(NVRAM_SPACE, nvram_mtd->erasesize); 
    263         if (!(buf = kmalloc(erasesize, GFP_KERNEL))) { 
     264        if (!(buf = vmalloc(erasesize))) { 
    264265                printk("nvram_commit: out of memory\n"); 
    265266                return -ENOMEM; 
     
    333334 done: 
    334335        mutex_unlock(&nvram_sem); 
    335         kfree(buf); 
     336        vfree(buf); 
    336337        return ret; 
    337338} 
     
    366367 
    367368        if (count > sizeof(tmp)) { 
    368                 if (!(name = kmalloc(count, GFP_KERNEL))) 
     369                if (!(name = vmalloc(count))) 
    369370                        return -ENOMEM; 
    370371        } 
     
    406407done: 
    407408        if (name != tmp) 
    408                 kfree(name); 
     409                vfree(name); 
    409410 
    410411        return ret; 
     
    418419 
    419420        if (count > sizeof(tmp)) { 
    420                 if (!(name = kmalloc(count, GFP_KERNEL))) 
     421                if (!(name = vmalloc(count))) 
    421422                        return -ENOMEM; 
    422423        } 
     
    436437 done: 
    437438        if (name != tmp) 
    438                 kfree(name); 
     439                vfree(name); 
    439440 
    440441        return ret; 
Note: See TracChangeset for help on using the changeset viewer.