aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/lustre/lustre/include/linux/lustre_compat25.h24
-rw-r--r--drivers/staging/lustre/lustre/llite/dir.c2
-rw-r--r--drivers/staging/lustre/lustre/llite/llite_lib.c17
-rw-r--r--fs/binfmt_misc.c7
-rw-r--r--fs/btrfs/volumes.c2
-rw-r--r--fs/ext4/move_extent.c4
-rw-r--r--fs/kernfs/file.c22
-rw-r--r--fs/proc_namespace.c16
-rw-r--r--include/linux/migrate.h10
-rw-r--r--include/linux/mm.h2
-rw-r--r--include/linux/uio.h5
-rw-r--r--init/do_mounts.c6
-rw-r--r--mm/filemap.c2
-rw-r--r--mm/mempolicy.c5
-rw-r--r--mm/migrate.c21
-rw-r--r--mm/shmem.c2
-rw-r--r--net/socket.c1
17 files changed, 29 insertions, 119 deletions
diff --git a/drivers/staging/lustre/lustre/include/linux/lustre_compat25.h b/drivers/staging/lustre/lustre/include/linux/lustre_compat25.h
index 8156b4c0f568..3925db160650 100644
--- a/drivers/staging/lustre/lustre/include/linux/lustre_compat25.h
+++ b/drivers/staging/lustre/lustre/include/linux/lustre_compat25.h
@@ -42,28 +42,6 @@
42 42
43#include "lustre_patchless_compat.h" 43#include "lustre_patchless_compat.h"
44 44
45# define LOCK_FS_STRUCT(fs) spin_lock(&(fs)->lock)
46# define UNLOCK_FS_STRUCT(fs) spin_unlock(&(fs)->lock)
47
48static inline void ll_set_fs_pwd(struct fs_struct *fs, struct vfsmount *mnt,
49 struct dentry *dentry)
50{
51 struct path path;
52 struct path old_pwd;
53
54 path.mnt = mnt;
55 path.dentry = dentry;
56 LOCK_FS_STRUCT(fs);
57 old_pwd = fs->pwd;
58 path_get(&path);
59 fs->pwd = path;
60 UNLOCK_FS_STRUCT(fs);
61
62 if (old_pwd.dentry)
63 path_put(&old_pwd);
64}
65
66
67/* 45/*
68 * set ATTR_BLOCKS to a high value to avoid any risk of collision with other 46 * set ATTR_BLOCKS to a high value to avoid any risk of collision with other
69 * ATTR_* attributes (see bug 13828) 47 * ATTR_* attributes (see bug 13828)
@@ -110,8 +88,6 @@ static inline void ll_set_fs_pwd(struct fs_struct *fs, struct vfsmount *mnt,
110#define cfs_bio_io_error(a, b) bio_io_error((a)) 88#define cfs_bio_io_error(a, b) bio_io_error((a))
111#define cfs_bio_endio(a, b, c) bio_endio((a), (c)) 89#define cfs_bio_endio(a, b, c) bio_endio((a), (c))
112 90
113#define cfs_fs_pwd(fs) ((fs)->pwd.dentry)
114#define cfs_fs_mnt(fs) ((fs)->pwd.mnt)
115#define cfs_path_put(nd) path_put(&(nd)->path) 91#define cfs_path_put(nd) path_put(&(nd)->path)
116 92
117 93
diff --git a/drivers/staging/lustre/lustre/llite/dir.c b/drivers/staging/lustre/lustre/llite/dir.c
index 407718a0026f..1ac7a702ce26 100644
--- a/drivers/staging/lustre/lustre/llite/dir.c
+++ b/drivers/staging/lustre/lustre/llite/dir.c
@@ -661,7 +661,7 @@ int ll_dir_setdirstripe(struct inode *dir, struct lmv_user_md *lump,
661 int mode; 661 int mode;
662 int err; 662 int err;
663 663
664 mode = (0755 & (S_IRWXUGO|S_ISVTX) & ~current->fs->umask) | S_IFDIR; 664 mode = (0755 & ~current_umask()) | S_IFDIR;
665 op_data = ll_prep_md_op_data(NULL, dir, NULL, filename, 665 op_data = ll_prep_md_op_data(NULL, dir, NULL, filename,
666 strlen(filename), mode, LUSTRE_OPC_MKDIR, 666 strlen(filename), mode, LUSTRE_OPC_MKDIR,
667 lump); 667 lump);
diff --git a/drivers/staging/lustre/lustre/llite/llite_lib.c b/drivers/staging/lustre/lustre/llite/llite_lib.c
index 6e423aa6a6e4..a3367bfb1456 100644
--- a/drivers/staging/lustre/lustre/llite/llite_lib.c
+++ b/drivers/staging/lustre/lustre/llite/llite_lib.c
@@ -2372,21 +2372,6 @@ char *ll_get_fsname(struct super_block *sb, char *buf, int buflen)
2372 return buf; 2372 return buf;
2373} 2373}
2374 2374
2375static char *ll_d_path(struct dentry *dentry, char *buf, int bufsize)
2376{
2377 char *path = NULL;
2378
2379 struct path p;
2380
2381 p.dentry = dentry;
2382 p.mnt = current->fs->root.mnt;
2383 path_get(&p);
2384 path = d_path(&p, buf, bufsize);
2385 path_put(&p);
2386
2387 return path;
2388}
2389
2390void ll_dirty_page_discard_warn(struct page *page, int ioret) 2375void ll_dirty_page_discard_warn(struct page *page, int ioret)
2391{ 2376{
2392 char *buf, *path = NULL; 2377 char *buf, *path = NULL;
@@ -2398,7 +2383,7 @@ void ll_dirty_page_discard_warn(struct page *page, int ioret)
2398 if (buf != NULL) { 2383 if (buf != NULL) {
2399 dentry = d_find_alias(page->mapping->host); 2384 dentry = d_find_alias(page->mapping->host);
2400 if (dentry != NULL) 2385 if (dentry != NULL)
2401 path = ll_d_path(dentry, buf, PAGE_SIZE); 2386 path = dentry_path_raw(dentry, buf, PAGE_SIZE);
2402 } 2387 }
2403 2388
2404 CDEBUG(D_WARNING, 2389 CDEBUG(D_WARNING,
diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c
index c04ef1d4f18a..97aff2879cda 100644
--- a/fs/binfmt_misc.c
+++ b/fs/binfmt_misc.c
@@ -254,6 +254,7 @@ static char *scanarg(char *s, char del)
254 return NULL; 254 return NULL;
255 } 255 }
256 } 256 }
257 s[-1] ='\0';
257 return s; 258 return s;
258} 259}
259 260
@@ -378,8 +379,7 @@ static Node *create_entry(const char __user *buffer, size_t count)
378 p = scanarg(p, del); 379 p = scanarg(p, del);
379 if (!p) 380 if (!p)
380 goto einval; 381 goto einval;
381 p[-1] = '\0'; 382 if (!e->magic[0])
382 if (p == e->magic)
383 goto einval; 383 goto einval;
384 if (USE_DEBUG) 384 if (USE_DEBUG)
385 print_hex_dump_bytes( 385 print_hex_dump_bytes(
@@ -391,8 +391,7 @@ static Node *create_entry(const char __user *buffer, size_t count)
391 p = scanarg(p, del); 391 p = scanarg(p, del);
392 if (!p) 392 if (!p)
393 goto einval; 393 goto einval;
394 p[-1] = '\0'; 394 if (!e->mask[0]) {
395 if (p == e->mask) {
396 e->mask = NULL; 395 e->mask = NULL;
397 pr_debug("register: mask[raw]: none\n"); 396 pr_debug("register: mask[raw]: none\n");
398 } else if (USE_DEBUG) 397 } else if (USE_DEBUG)
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 0144790e296e..50c5a8762aed 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -1485,7 +1485,7 @@ static void update_dev_time(char *path_name)
1485 struct file *filp; 1485 struct file *filp;
1486 1486
1487 filp = filp_open(path_name, O_RDWR, 0); 1487 filp = filp_open(path_name, O_RDWR, 0);
1488 if (!filp) 1488 if (IS_ERR(filp))
1489 return; 1489 return;
1490 file_update_time(filp); 1490 file_update_time(filp);
1491 filp_close(filp, NULL); 1491 filp_close(filp, NULL);
diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c
index 503ea15dc5db..370420bfae8d 100644
--- a/fs/ext4/move_extent.c
+++ b/fs/ext4/move_extent.c
@@ -267,7 +267,6 @@ move_extent_per_page(struct file *o_filp, struct inode *donor_inode,
267 handle_t *handle; 267 handle_t *handle;
268 ext4_lblk_t orig_blk_offset, donor_blk_offset; 268 ext4_lblk_t orig_blk_offset, donor_blk_offset;
269 unsigned long blocksize = orig_inode->i_sb->s_blocksize; 269 unsigned long blocksize = orig_inode->i_sb->s_blocksize;
270 unsigned int w_flags = 0;
271 unsigned int tmp_data_size, data_size, replaced_size; 270 unsigned int tmp_data_size, data_size, replaced_size;
272 int err2, jblocks, retries = 0; 271 int err2, jblocks, retries = 0;
273 int replaced_count = 0; 272 int replaced_count = 0;
@@ -288,9 +287,6 @@ again:
288 return 0; 287 return 0;
289 } 288 }
290 289
291 if (segment_eq(get_fs(), KERNEL_DS))
292 w_flags |= AOP_FLAG_UNINTERRUPTIBLE;
293
294 orig_blk_offset = orig_page_offset * blocks_per_page + 290 orig_blk_offset = orig_page_offset * blocks_per_page +
295 data_offset_in_page; 291 data_offset_in_page;
296 292
diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
index 697390ea47b8..ddc9f9612f16 100644
--- a/fs/kernfs/file.c
+++ b/fs/kernfs/file.c
@@ -448,27 +448,6 @@ static struct mempolicy *kernfs_vma_get_policy(struct vm_area_struct *vma,
448 return pol; 448 return pol;
449} 449}
450 450
451static int kernfs_vma_migrate(struct vm_area_struct *vma,
452 const nodemask_t *from, const nodemask_t *to,
453 unsigned long flags)
454{
455 struct file *file = vma->vm_file;
456 struct kernfs_open_file *of = kernfs_of(file);
457 int ret;
458
459 if (!of->vm_ops)
460 return 0;
461
462 if (!kernfs_get_active(of->kn))
463 return 0;
464
465 ret = 0;
466 if (of->vm_ops->migrate)
467 ret = of->vm_ops->migrate(vma, from, to, flags);
468
469 kernfs_put_active(of->kn);
470 return ret;
471}
472#endif 451#endif
473 452
474static const struct vm_operations_struct kernfs_vm_ops = { 453static const struct vm_operations_struct kernfs_vm_ops = {
@@ -479,7 +458,6 @@ static const struct vm_operations_struct kernfs_vm_ops = {
479#ifdef CONFIG_NUMA 458#ifdef CONFIG_NUMA
480 .set_policy = kernfs_vma_set_policy, 459 .set_policy = kernfs_vma_set_policy,
481 .get_policy = kernfs_vma_get_policy, 460 .get_policy = kernfs_vma_get_policy,
482 .migrate = kernfs_vma_migrate,
483#endif 461#endif
484}; 462};
485 463
diff --git a/fs/proc_namespace.c b/fs/proc_namespace.c
index 73ca1740d839..0f96f71ab32b 100644
--- a/fs/proc_namespace.c
+++ b/fs/proc_namespace.c
@@ -91,6 +91,7 @@ static void show_type(struct seq_file *m, struct super_block *sb)
91 91
92static int show_vfsmnt(struct seq_file *m, struct vfsmount *mnt) 92static int show_vfsmnt(struct seq_file *m, struct vfsmount *mnt)
93{ 93{
94 struct proc_mounts *p = proc_mounts(m);
94 struct mount *r = real_mount(mnt); 95 struct mount *r = real_mount(mnt);
95 int err = 0; 96 int err = 0;
96 struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt }; 97 struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt };
@@ -104,7 +105,10 @@ static int show_vfsmnt(struct seq_file *m, struct vfsmount *mnt)
104 mangle(m, r->mnt_devname ? r->mnt_devname : "none"); 105 mangle(m, r->mnt_devname ? r->mnt_devname : "none");
105 } 106 }
106 seq_putc(m, ' '); 107 seq_putc(m, ' ');
107 seq_path(m, &mnt_path, " \t\n\\"); 108 /* mountpoints outside of chroot jail will give SEQ_SKIP on this */
109 err = seq_path_root(m, &mnt_path, &p->root, " \t\n\\");
110 if (err)
111 goto out;
108 seq_putc(m, ' '); 112 seq_putc(m, ' ');
109 show_type(m, sb); 113 show_type(m, sb);
110 seq_puts(m, __mnt_is_readonly(mnt) ? " ro" : " rw"); 114 seq_puts(m, __mnt_is_readonly(mnt) ? " ro" : " rw");
@@ -125,7 +129,6 @@ static int show_mountinfo(struct seq_file *m, struct vfsmount *mnt)
125 struct mount *r = real_mount(mnt); 129 struct mount *r = real_mount(mnt);
126 struct super_block *sb = mnt->mnt_sb; 130 struct super_block *sb = mnt->mnt_sb;
127 struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt }; 131 struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt };
128 struct path root = p->root;
129 int err = 0; 132 int err = 0;
130 133
131 seq_printf(m, "%i %i %u:%u ", r->mnt_id, r->mnt_parent->mnt_id, 134 seq_printf(m, "%i %i %u:%u ", r->mnt_id, r->mnt_parent->mnt_id,
@@ -139,7 +142,7 @@ static int show_mountinfo(struct seq_file *m, struct vfsmount *mnt)
139 seq_putc(m, ' '); 142 seq_putc(m, ' ');
140 143
141 /* mountpoints outside of chroot jail will give SEQ_SKIP on this */ 144 /* mountpoints outside of chroot jail will give SEQ_SKIP on this */
142 err = seq_path_root(m, &mnt_path, &root, " \t\n\\"); 145 err = seq_path_root(m, &mnt_path, &p->root, " \t\n\\");
143 if (err) 146 if (err)
144 goto out; 147 goto out;
145 148
@@ -182,6 +185,7 @@ out:
182 185
183static int show_vfsstat(struct seq_file *m, struct vfsmount *mnt) 186static int show_vfsstat(struct seq_file *m, struct vfsmount *mnt)
184{ 187{
188 struct proc_mounts *p = proc_mounts(m);
185 struct mount *r = real_mount(mnt); 189 struct mount *r = real_mount(mnt);
186 struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt }; 190 struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt };
187 struct super_block *sb = mnt_path.dentry->d_sb; 191 struct super_block *sb = mnt_path.dentry->d_sb;
@@ -201,7 +205,10 @@ static int show_vfsstat(struct seq_file *m, struct vfsmount *mnt)
201 205
202 /* mount point */ 206 /* mount point */
203 seq_puts(m, " mounted on "); 207 seq_puts(m, " mounted on ");
204 seq_path(m, &mnt_path, " \t\n\\"); 208 /* mountpoints outside of chroot jail will give SEQ_SKIP on this */
209 err = seq_path_root(m, &mnt_path, &p->root, " \t\n\\");
210 if (err)
211 goto out;
205 seq_putc(m, ' '); 212 seq_putc(m, ' ');
206 213
207 /* file system type */ 214 /* file system type */
@@ -216,6 +223,7 @@ static int show_vfsstat(struct seq_file *m, struct vfsmount *mnt)
216 } 223 }
217 224
218 seq_putc(m, '\n'); 225 seq_putc(m, '\n');
226out:
219 return err; 227 return err;
220} 228}
221 229
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index 01aad3ed89ec..fab9b32ace8e 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -36,9 +36,6 @@ extern int migrate_pages(struct list_head *l, new_page_t new, free_page_t free,
36 36
37extern int migrate_prep(void); 37extern int migrate_prep(void);
38extern int migrate_prep_local(void); 38extern int migrate_prep_local(void);
39extern int migrate_vmas(struct mm_struct *mm,
40 const nodemask_t *from, const nodemask_t *to,
41 unsigned long flags);
42extern void migrate_page_copy(struct page *newpage, struct page *page); 39extern void migrate_page_copy(struct page *newpage, struct page *page);
43extern int migrate_huge_page_move_mapping(struct address_space *mapping, 40extern int migrate_huge_page_move_mapping(struct address_space *mapping,
44 struct page *newpage, struct page *page); 41 struct page *newpage, struct page *page);
@@ -57,13 +54,6 @@ static inline int migrate_pages(struct list_head *l, new_page_t new,
57static inline int migrate_prep(void) { return -ENOSYS; } 54static inline int migrate_prep(void) { return -ENOSYS; }
58static inline int migrate_prep_local(void) { return -ENOSYS; } 55static inline int migrate_prep_local(void) { return -ENOSYS; }
59 56
60static inline int migrate_vmas(struct mm_struct *mm,
61 const nodemask_t *from, const nodemask_t *to,
62 unsigned long flags)
63{
64 return -ENOSYS;
65}
66
67static inline void migrate_page_copy(struct page *newpage, 57static inline void migrate_page_copy(struct page *newpage,
68 struct page *page) {} 58 struct page *page) {}
69 59
diff --git a/include/linux/mm.h b/include/linux/mm.h
index c0a67b894c4c..f80d0194c9bc 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -286,8 +286,6 @@ struct vm_operations_struct {
286 */ 286 */
287 struct mempolicy *(*get_policy)(struct vm_area_struct *vma, 287 struct mempolicy *(*get_policy)(struct vm_area_struct *vma,
288 unsigned long addr); 288 unsigned long addr);
289 int (*migrate)(struct vm_area_struct *vma, const nodemask_t *from,
290 const nodemask_t *to, unsigned long flags);
291#endif 289#endif
292 /* called by sys_remap_file_pages() to populate non-linear mapping */ 290 /* called by sys_remap_file_pages() to populate non-linear mapping */
293 int (*remap_pages)(struct vm_area_struct *vma, unsigned long addr, 291 int (*remap_pages)(struct vm_area_struct *vma, unsigned long addr,
diff --git a/include/linux/uio.h b/include/linux/uio.h
index a41e252396c0..1c5e453f7ea9 100644
--- a/include/linux/uio.h
+++ b/include/linux/uio.h
@@ -101,6 +101,11 @@ static inline size_t iov_iter_count(struct iov_iter *i)
101 return i->count; 101 return i->count;
102} 102}
103 103
104static inline bool iter_is_iovec(struct iov_iter *i)
105{
106 return !(i->type & (ITER_BVEC | ITER_KVEC));
107}
108
104/* 109/*
105 * Cap the iov_iter by given limit; note that the second argument is 110 * Cap the iov_iter by given limit; note that the second argument is
106 * *not* the new size - it's upper limit for such. Passing it a value 111 * *not* the new size - it's upper limit for such. Passing it a value
diff --git a/init/do_mounts.c b/init/do_mounts.c
index 9b3565c41502..eb410083e8e0 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -395,8 +395,6 @@ retry:
395 case 0: 395 case 0:
396 goto out; 396 goto out;
397 case -EACCES: 397 case -EACCES:
398 flags |= MS_RDONLY;
399 goto retry;
400 case -EINVAL: 398 case -EINVAL:
401 continue; 399 continue;
402 } 400 }
@@ -419,6 +417,10 @@ retry:
419#endif 417#endif
420 panic("VFS: Unable to mount root fs on %s", b); 418 panic("VFS: Unable to mount root fs on %s", b);
421 } 419 }
420 if (!(flags & MS_RDONLY)) {
421 flags |= MS_RDONLY;
422 goto retry;
423 }
422 424
423 printk("List of all partitions:\n"); 425 printk("List of all partitions:\n");
424 printk_all_partitions(); 426 printk_all_partitions();
diff --git a/mm/filemap.c b/mm/filemap.c
index e8905bc3cbd7..bd8543c6508f 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -2464,7 +2464,7 @@ ssize_t generic_perform_write(struct file *file,
2464 /* 2464 /*
2465 * Copies from kernel address space cannot fail (NFSD is a big user). 2465 * Copies from kernel address space cannot fail (NFSD is a big user).
2466 */ 2466 */
2467 if (segment_eq(get_fs(), KERNEL_DS)) 2467 if (!iter_is_iovec(i))
2468 flags |= AOP_FLAG_UNINTERRUPTIBLE; 2468 flags |= AOP_FLAG_UNINTERRUPTIBLE;
2469 2469
2470 do { 2470 do {
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index f22c55947181..0e0961b8c39c 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -1041,10 +1041,6 @@ int do_migrate_pages(struct mm_struct *mm, const nodemask_t *from,
1041 1041
1042 down_read(&mm->mmap_sem); 1042 down_read(&mm->mmap_sem);
1043 1043
1044 err = migrate_vmas(mm, from, to, flags);
1045 if (err)
1046 goto out;
1047
1048 /* 1044 /*
1049 * Find a 'source' bit set in 'tmp' whose corresponding 'dest' 1045 * Find a 'source' bit set in 'tmp' whose corresponding 'dest'
1050 * bit in 'to' is not also set in 'tmp'. Clear the found 'source' 1046 * bit in 'to' is not also set in 'tmp'. Clear the found 'source'
@@ -1124,7 +1120,6 @@ int do_migrate_pages(struct mm_struct *mm, const nodemask_t *from,
1124 if (err < 0) 1120 if (err < 0)
1125 break; 1121 break;
1126 } 1122 }
1127out:
1128 up_read(&mm->mmap_sem); 1123 up_read(&mm->mmap_sem);
1129 if (err < 0) 1124 if (err < 0)
1130 return err; 1125 return err;
diff --git a/mm/migrate.c b/mm/migrate.c
index b1d02127e1be..344cdf692fc8 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1536,27 +1536,6 @@ out:
1536 return err; 1536 return err;
1537} 1537}
1538 1538
1539/*
1540 * Call migration functions in the vma_ops that may prepare
1541 * memory in a vm for migration. migration functions may perform
1542 * the migration for vmas that do not have an underlying page struct.
1543 */
1544int migrate_vmas(struct mm_struct *mm, const nodemask_t *to,
1545 const nodemask_t *from, unsigned long flags)
1546{
1547 struct vm_area_struct *vma;
1548 int err = 0;
1549
1550 for (vma = mm->mmap; vma && !err; vma = vma->vm_next) {
1551 if (vma->vm_ops && vma->vm_ops->migrate) {
1552 err = vma->vm_ops->migrate(vma, to, from, flags);
1553 if (err)
1554 break;
1555 }
1556 }
1557 return err;
1558}
1559
1560#ifdef CONFIG_NUMA_BALANCING 1539#ifdef CONFIG_NUMA_BALANCING
1561/* 1540/*
1562 * Returns true if this is a safe migration target node for misplaced NUMA 1541 * Returns true if this is a safe migration target node for misplaced NUMA
diff --git a/mm/shmem.c b/mm/shmem.c
index 185836ba53ef..73ba1df7c8ba 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -1536,7 +1536,7 @@ static ssize_t shmem_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
1536 * holes of a sparse file, we actually need to allocate those pages, 1536 * holes of a sparse file, we actually need to allocate those pages,
1537 * and even mark them dirty, so it cannot exceed the max_blocks limit. 1537 * and even mark them dirty, so it cannot exceed the max_blocks limit.
1538 */ 1538 */
1539 if (segment_eq(get_fs(), KERNEL_DS)) 1539 if (!iter_is_iovec(to))
1540 sgp = SGP_DIRTY; 1540 sgp = SGP_DIRTY;
1541 1541
1542 index = *ppos >> PAGE_CACHE_SHIFT; 1542 index = *ppos >> PAGE_CACHE_SHIFT;
diff --git a/net/socket.c b/net/socket.c
index 70bbde65e4ca..a2c33a4dc7ba 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -372,7 +372,6 @@ struct file *sock_alloc_file(struct socket *sock, int flags, const char *dname)
372 path.mnt = mntget(sock_mnt); 372 path.mnt = mntget(sock_mnt);
373 373
374 d_instantiate(path.dentry, SOCK_INODE(sock)); 374 d_instantiate(path.dentry, SOCK_INODE(sock));
375 SOCK_INODE(sock)->i_fop = &socket_file_ops;
376 375
377 file = alloc_file(&path, FMODE_READ | FMODE_WRITE, 376 file = alloc_file(&path, FMODE_READ | FMODE_WRITE,
378 &socket_file_ops); 377 &socket_file_ops);