diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/drivers/ata.c | 3 | ||||
-rw-r--r-- | firmware/drivers/fat.c | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index 7e1d2421d3..58349f69a6 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c | |||
@@ -292,6 +292,9 @@ int ata_write_sectors(unsigned long start, | |||
292 | 292 | ||
293 | last_disk_activity = current_tick; | 293 | last_disk_activity = current_tick; |
294 | 294 | ||
295 | if (start == 0) | ||
296 | panicf("Writing on sector 0\n"); | ||
297 | |||
295 | mutex_lock(&ata_mtx); | 298 | mutex_lock(&ata_mtx); |
296 | 299 | ||
297 | if ( sleeping ) { | 300 | if ( sleeping ) { |
diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c index 38223edc6a..37b0648c2e 100644 --- a/firmware/drivers/fat.c +++ b/firmware/drivers/fat.c | |||
@@ -1128,8 +1128,11 @@ static bool transfer( int start, int count, char* buf, bool write ) | |||
1128 | int err; | 1128 | int err; |
1129 | 1129 | ||
1130 | LDEBUGF("transfer(s=%x, c=%x, %s)\n",start, count, write?"write":"read"); | 1130 | LDEBUGF("transfer(s=%x, c=%x, %s)\n",start, count, write?"write":"read"); |
1131 | if (write) | 1131 | if (write) { |
1132 | if (start < fat_bpb.firstdatasector) | ||
1133 | panicf("Writing before data\n"); | ||
1132 | err = ata_write_sectors(start, count, buf); | 1134 | err = ata_write_sectors(start, count, buf); |
1135 | } | ||
1133 | else | 1136 | else |
1134 | err = ata_read_sectors(start, count, buf); | 1137 | err = ata_read_sectors(start, count, buf); |
1135 | if (err) { | 1138 | if (err) { |