diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/binfmt_elf.c | 4 | ||||
-rw-r--r-- | fs/buffer.c | 8 | ||||
-rw-r--r-- | fs/ext3/super.c | 10 | ||||
-rw-r--r-- | fs/namei.c | 1 | ||||
-rw-r--r-- | fs/proc/mmu.c | 14 | ||||
-rw-r--r-- | fs/reiserfs/stree.c | 1 | ||||
-rw-r--r-- | fs/reiserfs/super.c | 4 |
7 files changed, 33 insertions, 9 deletions
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index ce9423bb2de3..c374be51b041 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c | |||
@@ -251,7 +251,7 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr * exec, | |||
251 | } | 251 | } |
252 | 252 | ||
253 | /* Populate argv and envp */ | 253 | /* Populate argv and envp */ |
254 | p = current->mm->arg_start; | 254 | p = current->mm->arg_end = current->mm->arg_start; |
255 | while (argc-- > 0) { | 255 | while (argc-- > 0) { |
256 | size_t len; | 256 | size_t len; |
257 | __put_user((elf_addr_t)p, argv++); | 257 | __put_user((elf_addr_t)p, argv++); |
@@ -1301,7 +1301,7 @@ static void fill_prstatus(struct elf_prstatus *prstatus, | |||
1301 | static int fill_psinfo(struct elf_prpsinfo *psinfo, struct task_struct *p, | 1301 | static int fill_psinfo(struct elf_prpsinfo *psinfo, struct task_struct *p, |
1302 | struct mm_struct *mm) | 1302 | struct mm_struct *mm) |
1303 | { | 1303 | { |
1304 | int i, len; | 1304 | unsigned int i, len; |
1305 | 1305 | ||
1306 | /* first copy the parameters from user space */ | 1306 | /* first copy the parameters from user space */ |
1307 | memset(psinfo, 0, sizeof(struct elf_prpsinfo)); | 1307 | memset(psinfo, 0, sizeof(struct elf_prpsinfo)); |
diff --git a/fs/buffer.c b/fs/buffer.c index 6f88dcc6d002..7e9e409feaa7 100644 --- a/fs/buffer.c +++ b/fs/buffer.c | |||
@@ -2094,9 +2094,12 @@ int block_read_full_page(struct page *page, get_block_t *get_block) | |||
2094 | continue; | 2094 | continue; |
2095 | 2095 | ||
2096 | if (!buffer_mapped(bh)) { | 2096 | if (!buffer_mapped(bh)) { |
2097 | int err = 0; | ||
2098 | |||
2097 | fully_mapped = 0; | 2099 | fully_mapped = 0; |
2098 | if (iblock < lblock) { | 2100 | if (iblock < lblock) { |
2099 | if (get_block(inode, iblock, bh, 0)) | 2101 | err = get_block(inode, iblock, bh, 0); |
2102 | if (err) | ||
2100 | SetPageError(page); | 2103 | SetPageError(page); |
2101 | } | 2104 | } |
2102 | if (!buffer_mapped(bh)) { | 2105 | if (!buffer_mapped(bh)) { |
@@ -2104,7 +2107,8 @@ int block_read_full_page(struct page *page, get_block_t *get_block) | |||
2104 | memset(kaddr + i * blocksize, 0, blocksize); | 2107 | memset(kaddr + i * blocksize, 0, blocksize); |
2105 | flush_dcache_page(page); | 2108 | flush_dcache_page(page); |
2106 | kunmap_atomic(kaddr, KM_USER0); | 2109 | kunmap_atomic(kaddr, KM_USER0); |
2107 | set_buffer_uptodate(bh); | 2110 | if (!err) |
2111 | set_buffer_uptodate(bh); | ||
2108 | continue; | 2112 | continue; |
2109 | } | 2113 | } |
2110 | /* | 2114 | /* |
diff --git a/fs/ext3/super.c b/fs/ext3/super.c index 545b440a2d2f..981ccb233ef5 100644 --- a/fs/ext3/super.c +++ b/fs/ext3/super.c | |||
@@ -225,8 +225,16 @@ void __ext3_std_error (struct super_block * sb, const char * function, | |||
225 | int errno) | 225 | int errno) |
226 | { | 226 | { |
227 | char nbuf[16]; | 227 | char nbuf[16]; |
228 | const char *errstr = ext3_decode_error(sb, errno, nbuf); | 228 | const char *errstr; |
229 | |||
230 | /* Special case: if the error is EROFS, and we're not already | ||
231 | * inside a transaction, then there's really no point in logging | ||
232 | * an error. */ | ||
233 | if (errno == -EROFS && journal_current_handle() == NULL && | ||
234 | (sb->s_flags & MS_RDONLY)) | ||
235 | return; | ||
229 | 236 | ||
237 | errstr = ext3_decode_error(sb, errno, nbuf); | ||
230 | printk (KERN_CRIT "EXT3-fs error (device %s) in %s: %s\n", | 238 | printk (KERN_CRIT "EXT3-fs error (device %s) in %s: %s\n", |
231 | sb->s_id, function, errstr); | 239 | sb->s_id, function, errstr); |
232 | 240 | ||
diff --git a/fs/namei.c b/fs/namei.c index defe6781e003..dd78f01b6de8 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
@@ -1580,6 +1580,7 @@ enoent: | |||
1580 | fail: | 1580 | fail: |
1581 | return dentry; | 1581 | return dentry; |
1582 | } | 1582 | } |
1583 | EXPORT_SYMBOL_GPL(lookup_create); | ||
1583 | 1584 | ||
1584 | int vfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev) | 1585 | int vfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev) |
1585 | { | 1586 | { |
diff --git a/fs/proc/mmu.c b/fs/proc/mmu.c index a7041038ad56..25d2d9c6e329 100644 --- a/fs/proc/mmu.c +++ b/fs/proc/mmu.c | |||
@@ -50,13 +50,23 @@ void get_vmalloc_info(struct vmalloc_info *vmi) | |||
50 | read_lock(&vmlist_lock); | 50 | read_lock(&vmlist_lock); |
51 | 51 | ||
52 | for (vma = vmlist; vma; vma = vma->next) { | 52 | for (vma = vmlist; vma; vma = vma->next) { |
53 | unsigned long addr = (unsigned long) vma->addr; | ||
54 | |||
55 | /* | ||
56 | * Some archs keep another range for modules in vmlist | ||
57 | */ | ||
58 | if (addr < VMALLOC_START) | ||
59 | continue; | ||
60 | if (addr >= VMALLOC_END) | ||
61 | break; | ||
62 | |||
53 | vmi->used += vma->size; | 63 | vmi->used += vma->size; |
54 | 64 | ||
55 | free_area_size = (unsigned long) vma->addr - prev_end; | 65 | free_area_size = addr - prev_end; |
56 | if (vmi->largest_chunk < free_area_size) | 66 | if (vmi->largest_chunk < free_area_size) |
57 | vmi->largest_chunk = free_area_size; | 67 | vmi->largest_chunk = free_area_size; |
58 | 68 | ||
59 | prev_end = vma->size + (unsigned long) vma->addr; | 69 | prev_end = vma->size + addr; |
60 | } | 70 | } |
61 | 71 | ||
62 | if (VMALLOC_END - prev_end > vmi->largest_chunk) | 72 | if (VMALLOC_END - prev_end > vmi->largest_chunk) |
diff --git a/fs/reiserfs/stree.c b/fs/reiserfs/stree.c index da23ba75f3d5..c47f8fd31a2d 100644 --- a/fs/reiserfs/stree.c +++ b/fs/reiserfs/stree.c | |||
@@ -230,7 +230,6 @@ const struct reiserfs_key MAX_KEY = { | |||
230 | __constant_cpu_to_le32(0xffffffff)},} | 230 | __constant_cpu_to_le32(0xffffffff)},} |
231 | }; | 231 | }; |
232 | 232 | ||
233 | const struct in_core_key MAX_IN_CORE_KEY = {~0U, ~0U, ~0ULL>>4, 15}; | ||
234 | 233 | ||
235 | /* Get delimiting key of the buffer by looking for it in the buffers in the path, starting from the bottom | 234 | /* Get delimiting key of the buffer by looking for it in the buffers in the path, starting from the bottom |
236 | of the path, and going upwards. We must check the path's validity at each step. If the key is not in | 235 | of the path, and going upwards. We must check the path's validity at each step. If the key is not in |
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c index 31e75125f48b..b35b87744983 100644 --- a/fs/reiserfs/super.c +++ b/fs/reiserfs/super.c | |||
@@ -164,7 +164,9 @@ static int finish_unfinished (struct super_block * s) | |||
164 | 164 | ||
165 | /* compose key to look for "save" links */ | 165 | /* compose key to look for "save" links */ |
166 | max_cpu_key.version = KEY_FORMAT_3_5; | 166 | max_cpu_key.version = KEY_FORMAT_3_5; |
167 | max_cpu_key.on_disk_key = MAX_IN_CORE_KEY; | 167 | max_cpu_key.on_disk_key.k_dir_id = ~0U; |
168 | max_cpu_key.on_disk_key.k_objectid = ~0U; | ||
169 | set_cpu_key_k_offset (&max_cpu_key, ~0U); | ||
168 | max_cpu_key.key_length = 3; | 170 | max_cpu_key.key_length = 3; |
169 | 171 | ||
170 | #ifdef CONFIG_QUOTA | 172 | #ifdef CONFIG_QUOTA |