[PATCH 1/1] determine last ext3 LBA to fix wild LBA reads - v2

Benjamin Herrenschmidt benh at kernel.crashing.org
Thu Jan 4 12:09:16 EST 2007


>  static errcode_t linux_set_blksize (io_channel channel, int blksize)
>  {
> +     DEBUG_F("bs set to 0x%x\n", blksize);
>       channel->block_size = bs = blksize;
>       if (block_buffer) {
>  	  free(block_buffer);
> @@ -600,6 +612,11 @@ static errcode_t linux_read_blk (io_channel channel, unsigned long block, int co
>      
>       tempb = (((unsigned long long) block) *
>  	      ((unsigned long long)bs)) + (unsigned long long)doff;
> +     if (tempb > dend) {
> +	  DEBUG_F("\nSeek error on block %lx, tempb=%Lx\n", block, tempb >> 9);
> +	  return EXT2_ET_LLSEEK_FAILED;
> +     }
> +

In the case where we don't pass a "part", dend is 0 no ? We should check
this case and not apply the test...

Ben.





More information about the Linuxppc-dev mailing list