Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/fs/msdosfs



On Wed, Jul 04, 2012 at 01:45:08AM +0900, Izumi Tsutsui wrote:
 > > getdisksize() is not complicated; it tries DIOCGPART and then
 > > DIOCGWEDGEINFO and that's about it.
 > 
 > Yes, but it is not implementation issue but design issue.
 > 
 > > I think it's wrong for either of those to be returning a size of 0.
 > 
 > Yes, but which one? getdisksize() or DIOCGPART in each driver?

There's nothing getdisksize can do besides return what the driver
says. If the driver is reporting nonsense, it's wrong.

 > > > I can change it to KASSERT if we can assume that partinfo taken
 > > > from DIOCGPART must be initialized properly on all disk(9) devices,
 > > > i.e. if we can say disklab->d_secsize==0 means driver's bug,
 > > > but I could not find any evidence.
 > > >
 > > > All vfs mountfs functions are called in case of "root on generic"
 > > > via mountroot in setroot() so I thought returning error was better
 > > > than panic in that case, even after md(4) was fixed.
 > > > But if you don't agree it, please revert it.
 > > 
 > > If we know it can happen, crashing isn't very productive.
 > > 
 > > However, can you move the test to inside getdisksize()? Make it print
 > > a message and return EINVAL (or something). That way things other than
 > > msdosfs are also protected.
 > 
 > It depends how the design issue is resolved.
 > If DIOCGPART must not return secsize=0,
 > KASSERT in getdisksize() seems reasonable.
 > If uninitialized secsize=0 from DIOCGPART is acceptable,
 > getdisksize() or each caller should have sanity checks.

Sure, all I'm saying is that since we know it can happen, printing a
message and returning an error (and not just when DIAGNOSTIC) is
probably better than crashing. Once we think the drivers are fixed,
then it can become an assertion.

-- 
David A. Holland
dholland%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index