Revert "ipq807x: fat: Fix overflow issue"

This reverts commit 8791ff3dab.

Change-Id: I03af0ce35aa2df9e381b98c3842e4b88fbd35e1d
Signed-off-by: Sham Muthayyan <smuthayy@codeaurora.org>
This commit is contained in:
Sham Muthayyan 2019-09-30 18:02:20 +05:30
parent 8d977bd916
commit 107d511bdc
3 changed files with 13 additions and 20 deletions

View file

@ -377,7 +377,7 @@ static int dump_wlan_segments(struct dumpinfo_t *dumpinfo, int indx)
if (cur_type == QCA_WDT_LOG_DUMP_TYPE_WLAN_MOD_INFO) { if (cur_type == QCA_WDT_LOG_DUMP_TYPE_WLAN_MOD_INFO) {
snprintf(wlan_segment_name, sizeof(wlan_segment_name), snprintf(wlan_segment_name, sizeof(wlan_segment_name),
"MOD_INFO.txt"); "MODULE_INFO.txt");
wlan_tlv_size = *(uint32_t *)(uintptr_t)tlv_info.size; wlan_tlv_size = *(uint32_t *)(uintptr_t)tlv_info.size;
} else { } else {
snprintf(wlan_segment_name, snprintf(wlan_segment_name,

View file

@ -806,25 +806,21 @@ static void fill_dentry(fsdata *mydata, dir_entry *dentptr,
static int check_overflow(fsdata *mydata, __u32 clustnum, loff_t size) static int check_overflow(fsdata *mydata, __u32 clustnum, loff_t size)
{ {
__u32 startsect, sect_num, offset; __u32 startsect, sect_num, offset;
__u32 total_clusters = 0;
total_clusters = ((total_sector - mydata->rootdir_sect - if (clustnum > 0) {
mydata->rootdir_size) / startsect = mydata->data_begin +
mydata->clust_size) - 3; clustnum * mydata->clust_size;
} else {
/* the last sectors could be orphaned and not belong to any cluster */
if (clustnum >= total_clusters) {
return -1;
} else if (!clustnum) {
startsect = mydata->rootdir_sect; startsect = mydata->rootdir_sect;
sect_num = div_u64_rem(size, mydata->sect_size, &offset);
if (offset != 0)
sect_num++;
if (startsect + sect_num > total_sector)
return -1;
} }
sect_num = div_u64_rem(size, mydata->sect_size, &offset);
if (offset != 0)
sect_num++;
if (startsect + sect_num > total_sector)
return -1;
return 0; return 0;
} }
@ -1007,9 +1003,8 @@ static int do_fat_write(const char *filename, void *buffer, loff_t size,
if (mydata->fatsize == 32) { if (mydata->fatsize == 32) {
mydata->data_begin = mydata->rootdir_sect - mydata->data_begin = mydata->rootdir_sect -
(mydata->clust_size * 2); (mydata->clust_size * 2);
mydata->rootdir_size = 0;
} else { } else {
__u16 rootdir_size; int rootdir_size;
rootdir_size = ((bs.dir_entries[1] * (int)256 + rootdir_size = ((bs.dir_entries[1] * (int)256 +
bs.dir_entries[0]) * bs.dir_entries[0]) *
@ -1018,7 +1013,6 @@ static int do_fat_write(const char *filename, void *buffer, loff_t size,
mydata->data_begin = mydata->rootdir_sect + mydata->data_begin = mydata->rootdir_sect +
rootdir_size - rootdir_size -
(mydata->clust_size * 2); (mydata->clust_size * 2);
mydata->rootdir_size = rootdir_size;
} }
mydata->fatbufnum = -1; mydata->fatbufnum = -1;

View file

@ -174,7 +174,6 @@ typedef struct {
__u16 clust_size; /* Size of clusters in sectors */ __u16 clust_size; /* Size of clusters in sectors */
int data_begin; /* The sector of the first cluster, can be negative */ int data_begin; /* The sector of the first cluster, can be negative */
int fatbufnum; /* Used by get_fatent, init to -1 */ int fatbufnum; /* Used by get_fatent, init to -1 */
__u16 rootdir_size; /* total sectors in rootdir */
} fsdata; } fsdata;
typedef int (file_detectfs_func)(void); typedef int (file_detectfs_func)(void);