[Yaffs] Some notes on possible bugs

Startseite
Anhänge:
Nachricht
+ (text/plain)
Nachricht löschen
Nachricht beantworten
Autor: Sergey Kubushyn
Datum:  
To: yaffs-list
Betreff: [Yaffs] Some notes on possible bugs
Here they are (all for YAFFS2):

FIRST ONE:

=== Cut ===
fs/yaffs2/yaffs_guts.c: In function `yaffs_FlushFilesChunkCache':
fs/yaffs2/yaffs_guts.c:3426: warning: 'lowest' might be used uninitialized in this function
=== Cut ===

It IS serious. The fragment is:

=== Cut ===
if(!cache ||  dev->srCache[i].chunkId < lowest)
    {
        cache = &dev->srCache[i];
        lowest = cache->chunkId;
    }
=== Cut ===


and "lowest" is NOT initialised before that "if".


SECOND ONE:

=== Cut ===
fs/yaffs2/yaffs_guts.c: In function `yaffs_GutsInitialise':
fs/yaffs2/yaffs_guts.c:4941: warning: 'startIterator' might be used uninitialized in this function
fs/yaffs2/yaffs_guts.c:4942: warning: 'endIterator' might be used uninitialized in this function
=== Cut ===

The fragment is:

=== Cut ===
    // Now scan the blocks looking at the data.
    if(dev->isYaffs2)
    {
        startIterator = 0;
        endIterator = nBlocksToScan-1;
        T(YAFFS_TRACE_SCAN_DEBUG,(TSTR("%d blocks to be scanned" TENDSTR),nBlocksToScan));
    }



    // For each block.... backwards
    for(blockIterator = endIterator; blockIterator >= startIterator; blockIterator--)
    {
=== Cut ===


And yes, both those "iterators" are NOT initialised on entry to the "for"
cycle if "dev->isYaffs2" is zero (i.e. YAFFS1). And that cycle is performed
in any case.

I think somebody who knows what the appropriate code is supposed to do
should look into that and fix it asap.

---
******************************************************************
*  KSI@home    KOI8 Net  < >  The impossible we do immediately.  *
*  Las Vegas   NV, USA   < >  Miracles require 24-hour notice.   *
******************************************************************