aboutsummaryrefslogtreecommitdiff
path: root/libflash/blocklevel.h
diff options
context:
space:
mode:
authorCyril Bur <cyril.bur@au1.ibm.com>2015-06-04 10:36:03 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2015-06-09 16:37:33 +1000
commit89ec9eb94a0bf4605e73bc3dd1d8588005b7ec4d (patch)
tree6a31ff7ac65f0c252569b5ac2cf2e7c3aca06751 /libflash/blocklevel.h
parent39d9e14cdeef9a20e3da05d527b136de65e39904 (diff)
downloadskiboot-89ec9eb94a0bf4605e73bc3dd1d8588005b7ec4d.zip
skiboot-89ec9eb94a0bf4605e73bc3dd1d8588005b7ec4d.tar.gz
skiboot-89ec9eb94a0bf4605e73bc3dd1d8588005b7ec4d.tar.bz2
libflash: Add checking at blocklevel for erase block aligned erase lengths
Currently blocklevel_erase() will let any erase of any size get passed down to the backend. Not strictly a problem since libflash does do this check as well, however, not all future backends will. This is very much a sanity check to save from a likely mistake. Signed-off-by: Cyril Bur <cyril.bur@au1.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'libflash/blocklevel.h')
-rw-r--r--libflash/blocklevel.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/libflash/blocklevel.h b/libflash/blocklevel.h
index 2e8480d..a22ecb4 100644
--- a/libflash/blocklevel.h
+++ b/libflash/blocklevel.h
@@ -29,6 +29,11 @@ struct blocklevel_device {
int (*erase)(struct blocklevel_device *bl, uint32_t pos, uint32_t len);
int (*get_info)(struct blocklevel_device *bl, const char **name, uint32_t *total_size,
uint32_t *erase_granule);
+
+ /*
+ * Keep the erase mask so that blocklevel_erase() can do sanity checking
+ */
+ uint32_t erase_mask;
};
int blocklevel_read(struct blocklevel_device *bl, uint32_t pos, void *buf, uint32_t len);