Deepa Dinamani <deepa.kernel@xxxxxxxxx> writes: >> At least, it is wrong to call fat_time_fat2unix() before setup parameters >> in sbi. > > All the parameters that fat_time_fat2unix() cares in sbi is accessed through > > static inline int fat_tz_offset(struct msdos_sb_info *sbi) > { > return (sbi->options.tz_set ? > -sbi->options.time_offset : > sys_tz.tz_minuteswest) * SECS_PER_MIN; > } > > Both the sbi fields sbi->options.tz_set and sbi->options.time_offset > are set by the call to parse_options(). And, parse_options() is called > before the calls to fat_time_fat2unix().: > > int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat, > void (*setup)(struct super_block *)) > { > <snip> > > error = parse_options(sb, data, isvfat, silent, &debug, &sbi->options); > if (error) > goto out_fail; > > <snip> > > sbi->prev_free = FAT_START_ENT; > sb->s_maxbytes = 0xffffffff; > fat_time_fat2unix(sbi, &ts, 0, cpu_to_le16(FAT_DATE_MIN), 0); > sb->s_time_min = ts.tv_sec; > > fat_time_fat2unix(sbi, &ts, cpu_to_le16(FAT_TIME_MAX), > cpu_to_le16(FAT_DATE_MAX), 0); > sb->s_time_max = ts.tv_sec; > > <snip> > } > > I do not see what the problem is. Ouch, you are right. I was reading that patch wrongly, sorry. Thanks. -- OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>