diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/autofs4/expire.c | 4 | ||||
| -rw-r--r-- | fs/binfmt_elf_fdpic.c | 4 | ||||
| -rw-r--r-- | fs/buffer.c | 10 | ||||
| -rw-r--r-- | fs/exec.c | 7 | ||||
| -rw-r--r-- | fs/ocfs2/dcache.c | 15 | ||||
| -rw-r--r-- | fs/ocfs2/dir.c | 4 | ||||
| -rw-r--r-- | fs/ocfs2/export.c | 9 | ||||
| -rw-r--r-- | fs/ocfs2/journal.h | 5 | ||||
| -rw-r--r-- | fs/ocfs2/namei.c | 4 | ||||
| -rw-r--r-- | fs/ocfs2/suballoc.c | 21 | ||||
| -rw-r--r-- | fs/proc/meminfo.c | 2 | ||||
| -rw-r--r-- | fs/proc/task_mmu.c | 4 |
12 files changed, 58 insertions, 31 deletions
diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c index 75f7ddacf7d6..3077d8f16523 100644 --- a/fs/autofs4/expire.c +++ b/fs/autofs4/expire.c | |||
| @@ -70,8 +70,10 @@ static int autofs4_mount_busy(struct vfsmount *mnt, struct dentry *dentry) | |||
| 70 | * Otherwise it's an offset mount and we need to check | 70 | * Otherwise it's an offset mount and we need to check |
| 71 | * if we can umount its mount, if there is one. | 71 | * if we can umount its mount, if there is one. |
| 72 | */ | 72 | */ |
| 73 | if (!d_mountpoint(dentry)) | 73 | if (!d_mountpoint(dentry)) { |
| 74 | status = 0; | ||
| 74 | goto done; | 75 | goto done; |
| 76 | } | ||
| 75 | } | 77 | } |
| 76 | 78 | ||
| 77 | /* Update the expiry counter if fs is busy */ | 79 | /* Update the expiry counter if fs is busy */ |
diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c index 70cfc4b84ae0..fdb66faa24f1 100644 --- a/fs/binfmt_elf_fdpic.c +++ b/fs/binfmt_elf_fdpic.c | |||
| @@ -1388,7 +1388,7 @@ static void fill_prstatus(struct elf_prstatus *prstatus, | |||
| 1388 | prstatus->pr_sigpend = p->pending.signal.sig[0]; | 1388 | prstatus->pr_sigpend = p->pending.signal.sig[0]; |
| 1389 | prstatus->pr_sighold = p->blocked.sig[0]; | 1389 | prstatus->pr_sighold = p->blocked.sig[0]; |
| 1390 | prstatus->pr_pid = task_pid_vnr(p); | 1390 | prstatus->pr_pid = task_pid_vnr(p); |
| 1391 | prstatus->pr_ppid = task_pid_vnr(p->parent); | 1391 | prstatus->pr_ppid = task_pid_vnr(p->real_parent); |
| 1392 | prstatus->pr_pgrp = task_pgrp_vnr(p); | 1392 | prstatus->pr_pgrp = task_pgrp_vnr(p); |
| 1393 | prstatus->pr_sid = task_session_vnr(p); | 1393 | prstatus->pr_sid = task_session_vnr(p); |
| 1394 | if (thread_group_leader(p)) { | 1394 | if (thread_group_leader(p)) { |
| @@ -1433,7 +1433,7 @@ static int fill_psinfo(struct elf_prpsinfo *psinfo, struct task_struct *p, | |||
| 1433 | psinfo->pr_psargs[len] = 0; | 1433 | psinfo->pr_psargs[len] = 0; |
| 1434 | 1434 | ||
| 1435 | psinfo->pr_pid = task_pid_vnr(p); | 1435 | psinfo->pr_pid = task_pid_vnr(p); |
| 1436 | psinfo->pr_ppid = task_pid_vnr(p->parent); | 1436 | psinfo->pr_ppid = task_pid_vnr(p->real_parent); |
| 1437 | psinfo->pr_pgrp = task_pgrp_vnr(p); | 1437 | psinfo->pr_pgrp = task_pgrp_vnr(p); |
| 1438 | psinfo->pr_sid = task_session_vnr(p); | 1438 | psinfo->pr_sid = task_session_vnr(p); |
| 1439 | 1439 | ||
diff --git a/fs/buffer.c b/fs/buffer.c index b3e5be7514f5..aed297739eb0 100644 --- a/fs/buffer.c +++ b/fs/buffer.c | |||
| @@ -2397,7 +2397,8 @@ block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, | |||
| 2397 | if ((page->mapping != inode->i_mapping) || | 2397 | if ((page->mapping != inode->i_mapping) || |
| 2398 | (page_offset(page) > size)) { | 2398 | (page_offset(page) > size)) { |
| 2399 | /* page got truncated out from underneath us */ | 2399 | /* page got truncated out from underneath us */ |
| 2400 | goto out_unlock; | 2400 | unlock_page(page); |
| 2401 | goto out; | ||
| 2401 | } | 2402 | } |
| 2402 | 2403 | ||
| 2403 | /* page is wholly or partially inside EOF */ | 2404 | /* page is wholly or partially inside EOF */ |
| @@ -2411,14 +2412,15 @@ block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, | |||
| 2411 | ret = block_commit_write(page, 0, end); | 2412 | ret = block_commit_write(page, 0, end); |
| 2412 | 2413 | ||
| 2413 | if (unlikely(ret)) { | 2414 | if (unlikely(ret)) { |
| 2415 | unlock_page(page); | ||
| 2414 | if (ret == -ENOMEM) | 2416 | if (ret == -ENOMEM) |
| 2415 | ret = VM_FAULT_OOM; | 2417 | ret = VM_FAULT_OOM; |
| 2416 | else /* -ENOSPC, -EIO, etc */ | 2418 | else /* -ENOSPC, -EIO, etc */ |
| 2417 | ret = VM_FAULT_SIGBUS; | 2419 | ret = VM_FAULT_SIGBUS; |
| 2418 | } | 2420 | } else |
| 2421 | ret = VM_FAULT_LOCKED; | ||
| 2419 | 2422 | ||
| 2420 | out_unlock: | 2423 | out: |
| 2421 | unlock_page(page); | ||
| 2422 | return ret; | 2424 | return ret; |
| 2423 | } | 2425 | } |
| 2424 | 2426 | ||
| @@ -69,17 +69,18 @@ int suid_dumpable = 0; | |||
| 69 | static LIST_HEAD(formats); | 69 | static LIST_HEAD(formats); |
| 70 | static DEFINE_RWLOCK(binfmt_lock); | 70 | static DEFINE_RWLOCK(binfmt_lock); |
| 71 | 71 | ||
| 72 | int register_binfmt(struct linux_binfmt * fmt) | 72 | int __register_binfmt(struct linux_binfmt * fmt, int insert) |
| 73 | { | 73 | { |
| 74 | if (!fmt) | 74 | if (!fmt) |
| 75 | return -EINVAL; | 75 | return -EINVAL; |
| 76 | write_lock(&binfmt_lock); | 76 | write_lock(&binfmt_lock); |
| 77 | list_add(&fmt->lh, &formats); | 77 | insert ? list_add(&fmt->lh, &formats) : |
| 78 | list_add_tail(&fmt->lh, &formats); | ||
| 78 | write_unlock(&binfmt_lock); | 79 | write_unlock(&binfmt_lock); |
| 79 | return 0; | 80 | return 0; |
| 80 | } | 81 | } |
| 81 | 82 | ||
| 82 | EXPORT_SYMBOL(register_binfmt); | 83 | EXPORT_SYMBOL(__register_binfmt); |
| 83 | 84 | ||
| 84 | void unregister_binfmt(struct linux_binfmt * fmt) | 85 | void unregister_binfmt(struct linux_binfmt * fmt) |
| 85 | { | 86 | { |
diff --git a/fs/ocfs2/dcache.c b/fs/ocfs2/dcache.c index 7d604480557a..b574431a031d 100644 --- a/fs/ocfs2/dcache.c +++ b/fs/ocfs2/dcache.c | |||
| @@ -290,6 +290,21 @@ out_attach: | |||
| 290 | else | 290 | else |
| 291 | mlog_errno(ret); | 291 | mlog_errno(ret); |
| 292 | 292 | ||
| 293 | /* | ||
| 294 | * In case of error, manually free the allocation and do the iput(). | ||
| 295 | * We need to do this because error here means no d_instantiate(), | ||
| 296 | * which means iput() will not be called during dput(dentry). | ||
| 297 | */ | ||
| 298 | if (ret < 0 && !alias) { | ||
| 299 | ocfs2_lock_res_free(&dl->dl_lockres); | ||
| 300 | BUG_ON(dl->dl_count != 1); | ||
| 301 | spin_lock(&dentry_attach_lock); | ||
| 302 | dentry->d_fsdata = NULL; | ||
| 303 | spin_unlock(&dentry_attach_lock); | ||
| 304 | kfree(dl); | ||
| 305 | iput(inode); | ||
| 306 | } | ||
| 307 | |||
| 293 | dput(alias); | 308 | dput(alias); |
| 294 | 309 | ||
| 295 | return ret; | 310 | return ret; |
diff --git a/fs/ocfs2/dir.c b/fs/ocfs2/dir.c index e71160cda110..c5752305627c 100644 --- a/fs/ocfs2/dir.c +++ b/fs/ocfs2/dir.c | |||
| @@ -2697,7 +2697,7 @@ static int ocfs2_dx_dir_index_block(struct inode *dir, | |||
| 2697 | u32 *num_dx_entries, | 2697 | u32 *num_dx_entries, |
| 2698 | struct buffer_head *dirent_bh) | 2698 | struct buffer_head *dirent_bh) |
| 2699 | { | 2699 | { |
| 2700 | int ret, namelen, i; | 2700 | int ret = 0, namelen, i; |
| 2701 | char *de_buf, *limit; | 2701 | char *de_buf, *limit; |
| 2702 | struct ocfs2_dir_entry *de; | 2702 | struct ocfs2_dir_entry *de; |
| 2703 | struct buffer_head *dx_leaf_bh; | 2703 | struct buffer_head *dx_leaf_bh; |
| @@ -2934,7 +2934,7 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh, | |||
| 2934 | */ | 2934 | */ |
| 2935 | BUG_ON(alloc > 2); | 2935 | BUG_ON(alloc > 2); |
| 2936 | 2936 | ||
| 2937 | ret = ocfs2_reserve_clusters(osb, alloc, &data_ac); | 2937 | ret = ocfs2_reserve_clusters(osb, alloc + dx_alloc, &data_ac); |
| 2938 | if (ret) { | 2938 | if (ret) { |
| 2939 | mlog_errno(ret); | 2939 | mlog_errno(ret); |
| 2940 | goto out; | 2940 | goto out; |
diff --git a/fs/ocfs2/export.c b/fs/ocfs2/export.c index de3da8eb558c..15713cbb865c 100644 --- a/fs/ocfs2/export.c +++ b/fs/ocfs2/export.c | |||
| @@ -100,7 +100,8 @@ static struct dentry *ocfs2_get_dentry(struct super_block *sb, | |||
| 100 | 100 | ||
| 101 | /* If the inode allocator bit is clear, this inode must be stale */ | 101 | /* If the inode allocator bit is clear, this inode must be stale */ |
| 102 | if (!set) { | 102 | if (!set) { |
| 103 | mlog(0, "inode %llu suballoc bit is clear\n", blkno); | 103 | mlog(0, "inode %llu suballoc bit is clear\n", |
| 104 | (unsigned long long)blkno); | ||
| 104 | status = -ESTALE; | 105 | status = -ESTALE; |
| 105 | goto unlock_nfs_sync; | 106 | goto unlock_nfs_sync; |
| 106 | } | 107 | } |
| @@ -114,7 +115,7 @@ check_err: | |||
| 114 | if (status < 0) { | 115 | if (status < 0) { |
| 115 | if (status == -ESTALE) { | 116 | if (status == -ESTALE) { |
| 116 | mlog(0, "stale inode ino: %llu generation: %u\n", | 117 | mlog(0, "stale inode ino: %llu generation: %u\n", |
| 117 | blkno, handle->ih_generation); | 118 | (unsigned long long)blkno, handle->ih_generation); |
| 118 | } | 119 | } |
| 119 | result = ERR_PTR(status); | 120 | result = ERR_PTR(status); |
| 120 | goto bail; | 121 | goto bail; |
| @@ -129,8 +130,8 @@ check_err: | |||
| 129 | check_gen: | 130 | check_gen: |
| 130 | if (handle->ih_generation != inode->i_generation) { | 131 | if (handle->ih_generation != inode->i_generation) { |
| 131 | iput(inode); | 132 | iput(inode); |
| 132 | mlog(0, "stale inode ino: %llu generation: %u\n", blkno, | 133 | mlog(0, "stale inode ino: %llu generation: %u\n", |
| 133 | handle->ih_generation); | 134 | (unsigned long long)blkno, handle->ih_generation); |
| 134 | result = ERR_PTR(-ESTALE); | 135 | result = ERR_PTR(-ESTALE); |
| 135 | goto bail; | 136 | goto bail; |
| 136 | } | 137 | } |
diff --git a/fs/ocfs2/journal.h b/fs/ocfs2/journal.h index 619dd7f6c053..eb7b76331eb7 100644 --- a/fs/ocfs2/journal.h +++ b/fs/ocfs2/journal.h | |||
| @@ -437,8 +437,9 @@ static inline int ocfs2_unlink_credits(struct super_block *sb) | |||
| 437 | } | 437 | } |
| 438 | 438 | ||
| 439 | /* dinode + orphan dir dinode + inode alloc dinode + orphan dir entry + | 439 | /* dinode + orphan dir dinode + inode alloc dinode + orphan dir entry + |
| 440 | * inode alloc group descriptor + orphan dir index leaf */ | 440 | * inode alloc group descriptor + orphan dir index root + |
| 441 | #define OCFS2_DELETE_INODE_CREDITS (3 * OCFS2_INODE_UPDATE_CREDITS + 3) | 441 | * orphan dir index leaf */ |
| 442 | #define OCFS2_DELETE_INODE_CREDITS (3 * OCFS2_INODE_UPDATE_CREDITS + 4) | ||
| 442 | 443 | ||
| 443 | /* dinode update, old dir dinode update, new dir dinode update, old | 444 | /* dinode update, old dir dinode update, new dir dinode update, old |
| 444 | * dir dir entry, new dir dir entry, dir entry update for renaming | 445 | * dir dir entry, new dir dir entry, dir entry update for renaming |
diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c index 2220f93f668b..33464c6b60a2 100644 --- a/fs/ocfs2/namei.c +++ b/fs/ocfs2/namei.c | |||
| @@ -1025,10 +1025,8 @@ static int ocfs2_rename(struct inode *old_dir, | |||
| 1025 | struct inode *orphan_dir = NULL; | 1025 | struct inode *orphan_dir = NULL; |
| 1026 | struct ocfs2_dinode *newfe = NULL; | 1026 | struct ocfs2_dinode *newfe = NULL; |
| 1027 | char orphan_name[OCFS2_ORPHAN_NAMELEN + 1]; | 1027 | char orphan_name[OCFS2_ORPHAN_NAMELEN + 1]; |
| 1028 | struct buffer_head *orphan_entry_bh = NULL; | ||
| 1029 | struct buffer_head *newfe_bh = NULL; | 1028 | struct buffer_head *newfe_bh = NULL; |
| 1030 | struct buffer_head *old_inode_bh = NULL; | 1029 | struct buffer_head *old_inode_bh = NULL; |
| 1031 | struct buffer_head *insert_entry_bh = NULL; | ||
| 1032 | struct ocfs2_super *osb = NULL; | 1030 | struct ocfs2_super *osb = NULL; |
| 1033 | u64 newfe_blkno, old_de_ino; | 1031 | u64 newfe_blkno, old_de_ino; |
| 1034 | handle_t *handle = NULL; | 1032 | handle_t *handle = NULL; |
| @@ -1455,8 +1453,6 @@ bail: | |||
| 1455 | brelse(old_inode_bh); | 1453 | brelse(old_inode_bh); |
| 1456 | brelse(old_dir_bh); | 1454 | brelse(old_dir_bh); |
| 1457 | brelse(new_dir_bh); | 1455 | brelse(new_dir_bh); |
| 1458 | brelse(orphan_entry_bh); | ||
| 1459 | brelse(insert_entry_bh); | ||
| 1460 | 1456 | ||
| 1461 | mlog_exit(status); | 1457 | mlog_exit(status); |
| 1462 | 1458 | ||
diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c index b4ca5911caaf..8439f6b324b9 100644 --- a/fs/ocfs2/suballoc.c +++ b/fs/ocfs2/suballoc.c | |||
| @@ -2197,26 +2197,29 @@ static int ocfs2_get_suballoc_slot_bit(struct ocfs2_super *osb, u64 blkno, | |||
| 2197 | struct buffer_head *inode_bh = NULL; | 2197 | struct buffer_head *inode_bh = NULL; |
| 2198 | struct ocfs2_dinode *inode_fe; | 2198 | struct ocfs2_dinode *inode_fe; |
| 2199 | 2199 | ||
| 2200 | mlog_entry("blkno: %llu\n", blkno); | 2200 | mlog_entry("blkno: %llu\n", (unsigned long long)blkno); |
| 2201 | 2201 | ||
| 2202 | /* dirty read disk */ | 2202 | /* dirty read disk */ |
| 2203 | status = ocfs2_read_blocks_sync(osb, blkno, 1, &inode_bh); | 2203 | status = ocfs2_read_blocks_sync(osb, blkno, 1, &inode_bh); |
| 2204 | if (status < 0) { | 2204 | if (status < 0) { |
| 2205 | mlog(ML_ERROR, "read block %llu failed %d\n", blkno, status); | 2205 | mlog(ML_ERROR, "read block %llu failed %d\n", |
| 2206 | (unsigned long long)blkno, status); | ||
| 2206 | goto bail; | 2207 | goto bail; |
| 2207 | } | 2208 | } |
| 2208 | 2209 | ||
| 2209 | inode_fe = (struct ocfs2_dinode *) inode_bh->b_data; | 2210 | inode_fe = (struct ocfs2_dinode *) inode_bh->b_data; |
| 2210 | if (!OCFS2_IS_VALID_DINODE(inode_fe)) { | 2211 | if (!OCFS2_IS_VALID_DINODE(inode_fe)) { |
| 2211 | mlog(ML_ERROR, "invalid inode %llu requested\n", blkno); | 2212 | mlog(ML_ERROR, "invalid inode %llu requested\n", |
| 2213 | (unsigned long long)blkno); | ||
| 2212 | status = -EINVAL; | 2214 | status = -EINVAL; |
| 2213 | goto bail; | 2215 | goto bail; |
| 2214 | } | 2216 | } |
| 2215 | 2217 | ||
| 2216 | if (le16_to_cpu(inode_fe->i_suballoc_slot) != OCFS2_INVALID_SLOT && | 2218 | if (le16_to_cpu(inode_fe->i_suballoc_slot) != (u16)OCFS2_INVALID_SLOT && |
| 2217 | (u32)le16_to_cpu(inode_fe->i_suballoc_slot) > osb->max_slots - 1) { | 2219 | (u32)le16_to_cpu(inode_fe->i_suballoc_slot) > osb->max_slots - 1) { |
| 2218 | mlog(ML_ERROR, "inode %llu has invalid suballoc slot %u\n", | 2220 | mlog(ML_ERROR, "inode %llu has invalid suballoc slot %u\n", |
| 2219 | blkno, (u32)le16_to_cpu(inode_fe->i_suballoc_slot)); | 2221 | (unsigned long long)blkno, |
| 2222 | (u32)le16_to_cpu(inode_fe->i_suballoc_slot)); | ||
| 2220 | status = -EINVAL; | 2223 | status = -EINVAL; |
| 2221 | goto bail; | 2224 | goto bail; |
| 2222 | } | 2225 | } |
| @@ -2251,7 +2254,8 @@ static int ocfs2_test_suballoc_bit(struct ocfs2_super *osb, | |||
| 2251 | u64 bg_blkno; | 2254 | u64 bg_blkno; |
| 2252 | int status; | 2255 | int status; |
| 2253 | 2256 | ||
| 2254 | mlog_entry("blkno: %llu bit: %u\n", blkno, (unsigned int)bit); | 2257 | mlog_entry("blkno: %llu bit: %u\n", (unsigned long long)blkno, |
| 2258 | (unsigned int)bit); | ||
| 2255 | 2259 | ||
| 2256 | alloc_fe = (struct ocfs2_dinode *)alloc_bh->b_data; | 2260 | alloc_fe = (struct ocfs2_dinode *)alloc_bh->b_data; |
| 2257 | if ((bit + 1) > ocfs2_bits_per_group(&alloc_fe->id2.i_chain)) { | 2261 | if ((bit + 1) > ocfs2_bits_per_group(&alloc_fe->id2.i_chain)) { |
| @@ -2266,7 +2270,8 @@ static int ocfs2_test_suballoc_bit(struct ocfs2_super *osb, | |||
| 2266 | status = ocfs2_read_group_descriptor(suballoc, alloc_fe, bg_blkno, | 2270 | status = ocfs2_read_group_descriptor(suballoc, alloc_fe, bg_blkno, |
| 2267 | &group_bh); | 2271 | &group_bh); |
| 2268 | if (status < 0) { | 2272 | if (status < 0) { |
| 2269 | mlog(ML_ERROR, "read group %llu failed %d\n", bg_blkno, status); | 2273 | mlog(ML_ERROR, "read group %llu failed %d\n", |
| 2274 | (unsigned long long)bg_blkno, status); | ||
| 2270 | goto bail; | 2275 | goto bail; |
| 2271 | } | 2276 | } |
| 2272 | 2277 | ||
| @@ -2300,7 +2305,7 @@ int ocfs2_test_inode_bit(struct ocfs2_super *osb, u64 blkno, int *res) | |||
| 2300 | struct inode *inode_alloc_inode; | 2305 | struct inode *inode_alloc_inode; |
| 2301 | struct buffer_head *alloc_bh = NULL; | 2306 | struct buffer_head *alloc_bh = NULL; |
| 2302 | 2307 | ||
| 2303 | mlog_entry("blkno: %llu", blkno); | 2308 | mlog_entry("blkno: %llu", (unsigned long long)blkno); |
| 2304 | 2309 | ||
| 2305 | status = ocfs2_get_suballoc_slot_bit(osb, blkno, &suballoc_slot, | 2310 | status = ocfs2_get_suballoc_slot_bit(osb, blkno, &suballoc_slot, |
| 2306 | &suballoc_bit); | 2311 | &suballoc_bit); |
diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c index 74ea974f5ca6..c6b0302af4c4 100644 --- a/fs/proc/meminfo.c +++ b/fs/proc/meminfo.c | |||
| @@ -35,7 +35,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v) | |||
| 35 | #define K(x) ((x) << (PAGE_SHIFT - 10)) | 35 | #define K(x) ((x) << (PAGE_SHIFT - 10)) |
| 36 | si_meminfo(&i); | 36 | si_meminfo(&i); |
| 37 | si_swapinfo(&i); | 37 | si_swapinfo(&i); |
| 38 | committed = atomic_long_read(&vm_committed_space); | 38 | committed = percpu_counter_read_positive(&vm_committed_as); |
| 39 | allowed = ((totalram_pages - hugetlb_total_pages()) | 39 | allowed = ((totalram_pages - hugetlb_total_pages()) |
| 40 | * sysctl_overcommit_ratio / 100) + total_swap_pages; | 40 | * sysctl_overcommit_ratio / 100) + total_swap_pages; |
| 41 | 41 | ||
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 39e4ad4f59f4..6f61b7cc32e0 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c | |||
| @@ -665,6 +665,10 @@ static ssize_t pagemap_read(struct file *file, char __user *buf, | |||
| 665 | goto out_task; | 665 | goto out_task; |
| 666 | 666 | ||
| 667 | ret = 0; | 667 | ret = 0; |
| 668 | |||
| 669 | if (!count) | ||
| 670 | goto out_task; | ||
| 671 | |||
| 668 | mm = get_task_mm(task); | 672 | mm = get_task_mm(task); |
| 669 | if (!mm) | 673 | if (!mm) |
| 670 | goto out_task; | 674 | goto out_task; |
