• NeilBrown's avatar
    [PATCH] md: fix possible oops when starting a raid0 array · 5c4c3331
    NeilBrown authored
    This loop that sets up the hash_table has problems.
    Careful examination will show that the last time through, everything but
    the first line is pointless.  This is because all it does is change 'cur'
    and 'size' and neither of these are used after the loop.  This should ring
    warning bells...  That last time through the loop,
            size += conf->strip_zone[cur].size
    can index off the end of the strip_zone array.  Depending on what it finds
    there, it might exit the loop cleanly, or it might spin going further and
    further beyond the array until it hits an unmapped address.
    This patch rearranges the code so that the last, pointless, iteration of
    the loop never happens.  i.e.  the one statement of the last loop that is
    needed is moved the the end of the previous loop - or to before the loop
    starts - and the loop counter starts from 1 instead of 0.
    Cc: "Don Dupuis" <dondster@gmail.com>
    Signed-off-by: default avatarNeil Brown <neilb@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
raid0.c 14.1 KB