• Boaz Harrosh's avatar
    exofs: BUG: Avoid sbi realloc · 6d4073e8
    Boaz Harrosh authored
    Since the beginning we realloced the sbi structure when a bigger
    then one device table was specified. (I know that was really stupid).
    
    Then much later when "register bdi" was added (By Jens) it was
    registering the pointer to sbi->bdi before the realloc.
    
    We never saw this problem because up till now the realloc did not
    do anything since the device table was small enough to fit in the
    original allocation. But once we starting testing with large device
    tables (Bigger then 28) we noticed the crash of writeback operating
    on a deallocated pointer.
    
    * Avoid the all mess by allocating the device-table as a second array
      and get rid of the variable-sized structure and the rest of this
      mess.
    * Take the chance to clean near by structures and comments.
    * Add a needed dprint on startup to indicate the loaded layout.
    * Also move the bdi registration to the very end because it will
      only fail in a low memory, which will probably fail before hand.
      There are many more likely causes to not load before that. This
      way the error handling is made simpler. (Just doing this would be
      enough to fix the BUG)
    Signed-off-by: default avatarBoaz Harrosh <bharrosh@panasas.com>
    6d4073e8
super.c 25.6 KB