diff options
Diffstat (limited to 'drivers/mtd/devices/mtdram.c')
-rw-r--r-- | drivers/mtd/devices/mtdram.c | 35 |
1 files changed, 8 insertions, 27 deletions
diff --git a/drivers/mtd/devices/mtdram.c b/drivers/mtd/devices/mtdram.c index 2562689ba6b4..ec59d65897fb 100644 --- a/drivers/mtd/devices/mtdram.c +++ b/drivers/mtd/devices/mtdram.c | |||
@@ -34,34 +34,23 @@ static struct mtd_info *mtd_info; | |||
34 | 34 | ||
35 | static int ram_erase(struct mtd_info *mtd, struct erase_info *instr) | 35 | static int ram_erase(struct mtd_info *mtd, struct erase_info *instr) |
36 | { | 36 | { |
37 | if (instr->addr + instr->len > mtd->size) | ||
38 | return -EINVAL; | ||
39 | |||
40 | memset((char *)mtd->priv + instr->addr, 0xff, instr->len); | 37 | memset((char *)mtd->priv + instr->addr, 0xff, instr->len); |
41 | |||
42 | instr->state = MTD_ERASE_DONE; | 38 | instr->state = MTD_ERASE_DONE; |
43 | mtd_erase_callback(instr); | 39 | mtd_erase_callback(instr); |
44 | |||
45 | return 0; | 40 | return 0; |
46 | } | 41 | } |
47 | 42 | ||
48 | static int ram_point(struct mtd_info *mtd, loff_t from, size_t len, | 43 | static int ram_point(struct mtd_info *mtd, loff_t from, size_t len, |
49 | size_t *retlen, void **virt, resource_size_t *phys) | 44 | size_t *retlen, void **virt, resource_size_t *phys) |
50 | { | 45 | { |
51 | if (from + len > mtd->size) | ||
52 | return -EINVAL; | ||
53 | |||
54 | /* can we return a physical address with this driver? */ | ||
55 | if (phys) | ||
56 | return -EINVAL; | ||
57 | |||
58 | *virt = mtd->priv + from; | 46 | *virt = mtd->priv + from; |
59 | *retlen = len; | 47 | *retlen = len; |
60 | return 0; | 48 | return 0; |
61 | } | 49 | } |
62 | 50 | ||
63 | static void ram_unpoint(struct mtd_info *mtd, loff_t from, size_t len) | 51 | static int ram_unpoint(struct mtd_info *mtd, loff_t from, size_t len) |
64 | { | 52 | { |
53 | return 0; | ||
65 | } | 54 | } |
66 | 55 | ||
67 | /* | 56 | /* |
@@ -80,11 +69,7 @@ static unsigned long ram_get_unmapped_area(struct mtd_info *mtd, | |||
80 | static int ram_read(struct mtd_info *mtd, loff_t from, size_t len, | 69 | static int ram_read(struct mtd_info *mtd, loff_t from, size_t len, |
81 | size_t *retlen, u_char *buf) | 70 | size_t *retlen, u_char *buf) |
82 | { | 71 | { |
83 | if (from + len > mtd->size) | ||
84 | return -EINVAL; | ||
85 | |||
86 | memcpy(buf, mtd->priv + from, len); | 72 | memcpy(buf, mtd->priv + from, len); |
87 | |||
88 | *retlen = len; | 73 | *retlen = len; |
89 | return 0; | 74 | return 0; |
90 | } | 75 | } |
@@ -92,11 +77,7 @@ static int ram_read(struct mtd_info *mtd, loff_t from, size_t len, | |||
92 | static int ram_write(struct mtd_info *mtd, loff_t to, size_t len, | 77 | static int ram_write(struct mtd_info *mtd, loff_t to, size_t len, |
93 | size_t *retlen, const u_char *buf) | 78 | size_t *retlen, const u_char *buf) |
94 | { | 79 | { |
95 | if (to + len > mtd->size) | ||
96 | return -EINVAL; | ||
97 | |||
98 | memcpy((char *)mtd->priv + to, buf, len); | 80 | memcpy((char *)mtd->priv + to, buf, len); |
99 | |||
100 | *retlen = len; | 81 | *retlen = len; |
101 | return 0; | 82 | return 0; |
102 | } | 83 | } |
@@ -126,12 +107,12 @@ int mtdram_init_device(struct mtd_info *mtd, void *mapped_address, | |||
126 | mtd->priv = mapped_address; | 107 | mtd->priv = mapped_address; |
127 | 108 | ||
128 | mtd->owner = THIS_MODULE; | 109 | mtd->owner = THIS_MODULE; |
129 | mtd->erase = ram_erase; | 110 | mtd->_erase = ram_erase; |
130 | mtd->point = ram_point; | 111 | mtd->_point = ram_point; |
131 | mtd->unpoint = ram_unpoint; | 112 | mtd->_unpoint = ram_unpoint; |
132 | mtd->get_unmapped_area = ram_get_unmapped_area; | 113 | mtd->_get_unmapped_area = ram_get_unmapped_area; |
133 | mtd->read = ram_read; | 114 | mtd->_read = ram_read; |
134 | mtd->write = ram_write; | 115 | mtd->_write = ram_write; |
135 | 116 | ||
136 | if (mtd_device_register(mtd, NULL, 0)) | 117 | if (mtd_device_register(mtd, NULL, 0)) |
137 | return -EIO; | 118 | return -EIO; |