git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git]
/
fs
/
jfs
/
jfs_metapage.c
diff --git
a/fs/jfs/jfs_metapage.c
b/fs/jfs/jfs_metapage.c
index
8c94bb0
..
831ee09
100644
(file)
--- a/
fs/jfs/jfs_metapage.c
+++ b/
fs/jfs/jfs_metapage.c
@@
-225,8
+225,16
@@
struct metapage *__get_metapage(struct inode *inode, unsigned long lblock,
if (absolute)
mapping = inode->i_sb->s_bdev->bd_inode->i_mapping;
if (absolute)
mapping = inode->i_sb->s_bdev->bd_inode->i_mapping;
- else
+ else {
+ /*
+ * If an nfs client tries to read an inode that is larger
+ * than any existing inodes, we may try to read past the
+ * end of the inode map
+ */
+ if ((lblock << inode->i_blkbits) >= inode->i_size)
+ return NULL;
mapping = inode->i_mapping;
mapping = inode->i_mapping;
+ }
hash_ptr = meta_hash(mapping, lblock);
again:
hash_ptr = meta_hash(mapping, lblock);
again:
@@
-320,7
+328,7
@@
again:
atomic_set(&mp->nohomeok,0);
mp->mapping = mapping;
mp->index = lblock;
atomic_set(&mp->nohomeok,0);
mp->mapping = mapping;
mp->index = lblock;
- mp->page =
0
;
+ mp->page =
NULL
;
mp->logical_size = size;
add_to_hash(mp, hash_ptr);
spin_unlock(&meta_lock);
mp->logical_size = size;
add_to_hash(mp, hash_ptr);
spin_unlock(&meta_lock);
@@
-465,7
+473,7
@@
void release_metapage(struct metapage * mp)
set_bit(META_stale, &mp->flag);
spin_unlock(&meta_lock);
kunmap(mp->page);
set_bit(META_stale, &mp->flag);
spin_unlock(&meta_lock);
kunmap(mp->page);
- mp->data =
0
;
+ mp->data =
NULL
;
if (test_bit(META_dirty, &mp->flag))
__write_metapage(mp);
if (test_bit(META_sync, &mp->flag)) {
if (test_bit(META_dirty, &mp->flag))
__write_metapage(mp);
if (test_bit(META_sync, &mp->flag)) {
@@
-491,7
+499,7
@@
void release_metapage(struct metapage * mp)
*/
log = mp->log;
LOGSYNC_LOCK(log);
*/
log = mp->log;
LOGSYNC_LOCK(log);
- mp->log =
0
;
+ mp->log =
NULL
;
mp->lsn = 0;
mp->clsn = 0;
log->count--;
mp->lsn = 0;
mp->clsn = 0;
log->count--;