[PATCH] reiserfs: do not check if unsigned < 0

This patch fixes bugs in reiserfs where unsigned integers were checked
whether they are less then 0.

Signed-off-by: Vladimir V. Saveliev <vs@namesys.com>
Cc: Neil Brown <neilb@cse.unsw.edu.au>
Signed-off-by: Hans Reiser <reiser@namesys.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Vladimir V. Saveliev and committed by Linus Torvalds c499ec24 a57ebfdb

+10 -15
+7 -7
fs/reiserfs/file.c
··· 1464 1464 partially overwritten pages, if needed. And lock the pages, 1465 1465 so that nobody else can access these until we are done. 1466 1466 We get number of actual blocks needed as a result. */ 1467 - blocks_to_allocate = 1468 - reiserfs_prepare_file_region_for_write(inode, pos, 1469 - num_pages, 1470 - write_bytes, 1471 - prepared_pages); 1472 - if (blocks_to_allocate < 0) { 1473 - res = blocks_to_allocate; 1467 + res = reiserfs_prepare_file_region_for_write(inode, pos, 1468 + num_pages, 1469 + write_bytes, 1470 + prepared_pages); 1471 + if (res < 0) { 1474 1472 reiserfs_release_claimed_blocks(inode->i_sb, 1475 1473 num_pages << 1476 1474 (PAGE_CACHE_SHIFT - 1477 1475 inode->i_blkbits)); 1478 1476 break; 1479 1477 } 1478 + 1479 + blocks_to_allocate = res; 1480 1480 1481 1481 /* First we correct our estimate of how many blocks we need */ 1482 1482 reiserfs_release_claimed_blocks(inode->i_sb,
+2 -6
fs/reiserfs/inode.c
··· 627 627 reiserfs_write_lock(inode->i_sb); 628 628 version = get_inode_item_key_version(inode); 629 629 630 - if (block < 0) { 631 - reiserfs_write_unlock(inode->i_sb); 632 - return -EIO; 633 - } 634 - 635 630 if (!file_capable(inode, block)) { 636 631 reiserfs_write_unlock(inode->i_sb); 637 632 return -EFBIG; ··· 929 934 //pos_in_item * inode->i_sb->s_blocksize, 930 935 TYPE_INDIRECT, 3); // key type is unimportant 931 936 937 + RFALSE(cpu_key_k_offset(&tmp_key) > cpu_key_k_offset(&key), 938 + "green-805: invalid offset"); 932 939 blocks_needed = 933 940 1 + 934 941 ((cpu_key_k_offset(&key) - 935 942 cpu_key_k_offset(&tmp_key)) >> inode->i_sb-> 936 943 s_blocksize_bits); 937 - RFALSE(blocks_needed < 0, "green-805: invalid offset"); 938 944 939 945 if (blocks_needed == 1) { 940 946 un = &unf_single;
+1 -2
fs/reiserfs/journal.c
··· 2319 2319 return 1; 2320 2320 } 2321 2321 jh = (struct reiserfs_journal_header *)(journal->j_header_bh->b_data); 2322 - if (le32_to_cpu(jh->j_first_unflushed_offset) >= 0 && 2323 - le32_to_cpu(jh->j_first_unflushed_offset) < 2322 + if (le32_to_cpu(jh->j_first_unflushed_offset) < 2324 2323 SB_ONDISK_JOURNAL_SIZE(p_s_sb) 2325 2324 && le32_to_cpu(jh->j_last_flush_trans_id) > 0) { 2326 2325 oldest_start =