Commit c499ec24c31edf270e777a868ffd0daddcfe7ebd
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
fs/reiserfs/file.c
... | ... | @@ -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, |
fs/reiserfs/inode.c
... | ... | @@ -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 = |