Commit c499ec24c31edf270e777a868ffd0daddcfe7ebd

Authored by Vladimir V. Saveliev
Committed by Linus Torvalds
1 parent a57ebfdb2c

[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>

Showing 3 changed files with 10 additions and 15 deletions Side-by-side Diff

... ... @@ -1464,19 +1464,19 @@
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,
... ... @@ -627,11 +627,6 @@
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;
638 633  
... ... @@ -934,12 +929,13 @@
934 929 //pos_in_item * inode->i_sb->s_blocksize,
935 930 TYPE_INDIRECT, 3); // key type is unimportant
936 931  
  932 + RFALSE(cpu_key_k_offset(&tmp_key) > cpu_key_k_offset(&key),
  933 + "green-805: invalid offset");
937 934 blocks_needed =
938 935 1 +
939 936 ((cpu_key_k_offset(&key) -
940 937 cpu_key_k_offset(&tmp_key)) >> inode->i_sb->
941 938 s_blocksize_bits);
942   - RFALSE(blocks_needed < 0, "green-805: invalid offset");
943 939  
944 940 if (blocks_needed == 1) {
945 941 un = &unf_single;
fs/reiserfs/journal.c
... ... @@ -2319,8 +2319,7 @@
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 =