diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-09-06 10:12:06 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-09-06 10:20:46 +0200 |
commit | fae59c9b4248e5511d1ea469624aa9842fc289e1 (patch) | |
tree | 524139be7f6d630b168319acd777e94a724542b5 /cpukit/libfs/src/dosfs/msdos_format.c | |
parent | Fix integer overflow problems in times() (diff) | |
download | rtems-fae59c9b4248e5511d1ea469624aa9842fc289e1.tar.bz2 |
dosfs: Support a cluster size of 64KiB
Close #3003.
Diffstat (limited to 'cpukit/libfs/src/dosfs/msdos_format.c')
-rw-r--r-- | cpukit/libfs/src/dosfs/msdos_format.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/cpukit/libfs/src/dosfs/msdos_format.c b/cpukit/libfs/src/dosfs/msdos_format.c index 17e435d65a..e3ff94b925 100644 --- a/cpukit/libfs/src/dosfs/msdos_format.c +++ b/cpukit/libfs/src/dosfs/msdos_format.c @@ -316,7 +316,7 @@ static int msdos_format_eval_sectors_per_cluster uint32_t fatdata_sect_cnt; uint32_t fat_sectors_cnt; /* - * ensure, that maximum cluster size (32KByte) is not exceeded + * ensure, that maximum cluster size (64KiB) is not exceeded */ while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) { sectors_per_cluster /= 2; @@ -397,7 +397,7 @@ msdos_get_fat_type( const uint32_t bytes_per_sector, uint32_t ms_sectors_per_cluster_limit_FAT12 = ( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector; uint32_t ms_sectors_per_cluster_limit_FAT16 = - ( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector; + ( 0x8000 +1 ) / bytes_per_sector; uint8_t fattype = FAT_FAT32; if ( number_of_clusters < FAT_FAT12_MAX_CLN @@ -427,13 +427,13 @@ msdos_set_sectors_per_cluster_from_request( * check sectors per cluster. * must be power of 2 * must be smaller than or equal to 128 - * sectors_per_cluster*bytes_per_sector must not be bigger than 32K + * sectors_per_cluster*bytes_per_sector must not be bigger than 64K */ for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) { if ( fmt_params->sectors_per_cluster >= onebit ) { fmt_params->sectors_per_cluster = onebit; if ( fmt_params->sectors_per_cluster - <= 32768L / fmt_params->bytes_per_sector ) { + <= MS_BYTES_PER_CLUSTER_LIMIT / fmt_params->bytes_per_sector ) { /* value is small enough so this value is ok */ onebit = 1; ret_val = 0; |