Two suggested change in temp buffer management:
diff --git a/yaffs_guts.c b/yaffs_guts.c
index c52ff84..94177df 100644
--- a/yaffs_guts.c
+++ b/yaffs_guts.c
@@ -147,7 +147,7 @@ u8 *yaffs_get_temp_buffer(struct yaffs_dev * dev)
dev->max_temp = dev->temp_in_use;
for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
- if (dev->temp_buffer[i].in_use == 0) {
+ if (dev->temp_buffer[i].in_use == 0 && dev->temp_buffer[i].buffer) {
dev->temp_buffer[i].in_use = 1;
return dev->temp_buffer[i].buffer;
}
@@ -160,7 +160,7 @@ u8 *yaffs_get_temp_buffer(struct yaffs_dev * dev)
*/
dev->unmanaged_buffer_allocs++;
- return kmalloc(dev->data_bytes_per_chunk, GFP_NOFS);
+ return kmalloc(dev->param.total_bytes_per_chunk, GFP_NOFS);
}