diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-14 18:31:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-14 18:31:03 -0400 |
commit | ca2ec32658db160745990496f0f4580056a5dc9f (patch) | |
tree | d211f239219c85214da46dc1cbad4184a81d0248 /arch | |
parent | 6c8a53c9e6a151fffb07f8b4c34bd1e33dddd467 (diff) | |
parent | fdc81f45e9f57858da6351836507fbcf1b7583ee (diff) |
Merge branch 'for-linus-1' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs update from Al Viro:
"Part one:
- struct filename-related cleanups
- saner iov_iter_init() replacements (and switching the syscalls to
use of those)
- ntfs switch to ->write_iter() (Anton)
- aio cleanups and splitting iocb into common and async parts
(Christoph)
- assorted fixes (me, bfields, Andrew Elble)
There's a lot more, including the completion of switchover to
->{read,write}_iter(), d_inode/d_backing_inode annotations, f_flags
race fixes, etc, but that goes after #for-davem merge. David has
pulled it, and once it's in I'll send the next vfs pull request"
* 'for-linus-1' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (35 commits)
sg_start_req(): use import_iovec()
sg_start_req(): make sure that there's not too many elements in iovec
blk_rq_map_user(): use import_single_range()
sg_io(): use import_iovec()
process_vm_access: switch to {compat_,}import_iovec()
switch keyctl_instantiate_key_common() to iov_iter
switch {compat_,}do_readv_writev() to {compat_,}import_iovec()
aio_setup_vectored_rw(): switch to {compat_,}import_iovec()
vmsplice_to_user(): switch to import_iovec()
kill aio_setup_single_vector()
aio: simplify arguments of aio_setup_..._rw()
aio: lift iov_iter_init() into aio_setup_..._rw()
lift iov_iter into {compat_,}do_readv_writev()
NFS: fix BUG() crash in notify_change() with patch to chown_common()
dcache: return -ESTALE not -EBUSY on distributed fs race
NTFS: Version 2.1.32 - Update file write from aio_write to write_iter.
VFS: Add iov_iter_fault_in_multipages_readable()
drop bogus check in file_open_root()
switch security_inode_getattr() to struct path *
constify tomoyo_realpath_from_path()
...
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arc/kernel/process.c | 2 | ||||
-rw-r--r-- | arch/c6x/kernel/process.c | 1 | ||||
-rw-r--r-- | arch/frv/kernel/signal.c | 4 | ||||
-rw-r--r-- | arch/hexagon/kernel/process.c | 2 | ||||
-rw-r--r-- | arch/m32r/kernel/signal.c | 2 | ||||
-rw-r--r-- | arch/metag/include/asm/processor.h | 1 | ||||
-rw-r--r-- | arch/microblaze/kernel/signal.c | 2 | ||||
-rw-r--r-- | arch/nios2/kernel/process.c | 1 | ||||
-rw-r--r-- | arch/openrisc/kernel/process.c | 1 | ||||
-rw-r--r-- | arch/s390/hypfs/inode.c | 2 | ||||
-rw-r--r-- | arch/sh/kernel/signal_32.c | 4 | ||||
-rw-r--r-- | arch/sh/kernel/signal_64.c | 4 | ||||
-rw-r--r-- | arch/xtensa/kernel/signal.c | 5 |
13 files changed, 1 insertions, 30 deletions
diff --git a/arch/arc/kernel/process.c b/arch/arc/kernel/process.c index 98c00a2d4dd9..f46efd14059d 100644 --- a/arch/arc/kernel/process.c +++ b/arch/arc/kernel/process.c | |||
@@ -155,8 +155,6 @@ int copy_thread(unsigned long clone_flags, | |||
155 | */ | 155 | */ |
156 | void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long usp) | 156 | void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long usp) |
157 | { | 157 | { |
158 | set_fs(USER_DS); /* user space */ | ||
159 | |||
160 | regs->sp = usp; | 158 | regs->sp = usp; |
161 | regs->ret = pc; | 159 | regs->ret = pc; |
162 | 160 | ||
diff --git a/arch/c6x/kernel/process.c b/arch/c6x/kernel/process.c index 57d2ea8d1977..3ae9f5a166a0 100644 --- a/arch/c6x/kernel/process.c +++ b/arch/c6x/kernel/process.c | |||
@@ -101,7 +101,6 @@ void start_thread(struct pt_regs *regs, unsigned int pc, unsigned long usp) | |||
101 | */ | 101 | */ |
102 | usp -= 8; | 102 | usp -= 8; |
103 | 103 | ||
104 | set_fs(USER_DS); | ||
105 | regs->pc = pc; | 104 | regs->pc = pc; |
106 | regs->sp = usp; | 105 | regs->sp = usp; |
107 | regs->tsr |= 0x40; /* set user mode */ | 106 | regs->tsr |= 0x40; /* set user mode */ |
diff --git a/arch/frv/kernel/signal.c b/arch/frv/kernel/signal.c index 336713ab4745..85ca6727ca07 100644 --- a/arch/frv/kernel/signal.c +++ b/arch/frv/kernel/signal.c | |||
@@ -176,8 +176,6 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set) | |||
176 | struct sigframe __user *frame; | 176 | struct sigframe __user *frame; |
177 | int rsig, sig = ksig->sig; | 177 | int rsig, sig = ksig->sig; |
178 | 178 | ||
179 | set_fs(USER_DS); | ||
180 | |||
181 | frame = get_sigframe(ksig, sizeof(*frame)); | 179 | frame = get_sigframe(ksig, sizeof(*frame)); |
182 | 180 | ||
183 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) | 181 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
@@ -257,8 +255,6 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set) | |||
257 | struct rt_sigframe __user *frame; | 255 | struct rt_sigframe __user *frame; |
258 | int rsig, sig = ksig->sig; | 256 | int rsig, sig = ksig->sig; |
259 | 257 | ||
260 | set_fs(USER_DS); | ||
261 | |||
262 | frame = get_sigframe(ksig, sizeof(*frame)); | 258 | frame = get_sigframe(ksig, sizeof(*frame)); |
263 | 259 | ||
264 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) | 260 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
diff --git a/arch/hexagon/kernel/process.c b/arch/hexagon/kernel/process.c index 0a0dd5c05b46..a9ebd471823a 100644 --- a/arch/hexagon/kernel/process.c +++ b/arch/hexagon/kernel/process.c | |||
@@ -37,8 +37,6 @@ | |||
37 | */ | 37 | */ |
38 | void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long sp) | 38 | void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long sp) |
39 | { | 39 | { |
40 | /* Set to run with user-mode data segmentation */ | ||
41 | set_fs(USER_DS); | ||
42 | /* We want to zero all data-containing registers. Is this overkill? */ | 40 | /* We want to zero all data-containing registers. Is this overkill? */ |
43 | memset(regs, 0, sizeof(*regs)); | 41 | memset(regs, 0, sizeof(*regs)); |
44 | /* We might want to also zero all Processor registers here */ | 42 | /* We might want to also zero all Processor registers here */ |
diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c index 7736c6660a15..8c25e0c8f6a5 100644 --- a/arch/m32r/kernel/signal.c +++ b/arch/m32r/kernel/signal.c | |||
@@ -214,8 +214,6 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, | |||
214 | regs->r2 = (unsigned long)&frame->uc; | 214 | regs->r2 = (unsigned long)&frame->uc; |
215 | regs->bpc = (unsigned long)ksig->ka.sa.sa_handler; | 215 | regs->bpc = (unsigned long)ksig->ka.sa.sa_handler; |
216 | 216 | ||
217 | set_fs(USER_DS); | ||
218 | |||
219 | #if DEBUG_SIG | 217 | #if DEBUG_SIG |
220 | printk("SIG deliver (%s:%d): sp=%p pc=%p\n", | 218 | printk("SIG deliver (%s:%d): sp=%p pc=%p\n", |
221 | current->comm, current->pid, frame, regs->pc); | 219 | current->comm, current->pid, frame, regs->pc); |
diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h index 13272fd5a5ba..0838ca699764 100644 --- a/arch/metag/include/asm/processor.h +++ b/arch/metag/include/asm/processor.h | |||
@@ -111,7 +111,6 @@ struct thread_struct { | |||
111 | */ | 111 | */ |
112 | #define start_thread(regs, pc, usp) do { \ | 112 | #define start_thread(regs, pc, usp) do { \ |
113 | unsigned int *argc = (unsigned int *) bprm->exec; \ | 113 | unsigned int *argc = (unsigned int *) bprm->exec; \ |
114 | set_fs(USER_DS); \ | ||
115 | current->thread.int_depth = 1; \ | 114 | current->thread.int_depth = 1; \ |
116 | /* Force this process down to user land */ \ | 115 | /* Force this process down to user land */ \ |
117 | regs->ctx.SaveMask = TBICTX_PRIV_BIT; \ | 116 | regs->ctx.SaveMask = TBICTX_PRIV_BIT; \ |
diff --git a/arch/microblaze/kernel/signal.c b/arch/microblaze/kernel/signal.c index a1cbaf90e2ea..20ccd4e2baa5 100644 --- a/arch/microblaze/kernel/signal.c +++ b/arch/microblaze/kernel/signal.c | |||
@@ -236,8 +236,6 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, | |||
236 | /* Offset to handle microblaze rtid r14, 0 */ | 236 | /* Offset to handle microblaze rtid r14, 0 */ |
237 | regs->pc = (unsigned long)ksig->ka.sa.sa_handler; | 237 | regs->pc = (unsigned long)ksig->ka.sa.sa_handler; |
238 | 238 | ||
239 | set_fs(USER_DS); | ||
240 | |||
241 | #ifdef DEBUG_SIG | 239 | #ifdef DEBUG_SIG |
242 | pr_info("SIG deliver (%s:%d): sp=%p pc=%08lx\n", | 240 | pr_info("SIG deliver (%s:%d): sp=%p pc=%08lx\n", |
243 | current->comm, current->pid, frame, regs->pc); | 241 | current->comm, current->pid, frame, regs->pc); |
diff --git a/arch/nios2/kernel/process.c b/arch/nios2/kernel/process.c index 0e075b5ad2a5..2f8c74f93e70 100644 --- a/arch/nios2/kernel/process.c +++ b/arch/nios2/kernel/process.c | |||
@@ -94,7 +94,6 @@ void show_regs(struct pt_regs *regs) | |||
94 | 94 | ||
95 | void flush_thread(void) | 95 | void flush_thread(void) |
96 | { | 96 | { |
97 | set_fs(USER_DS); | ||
98 | } | 97 | } |
99 | 98 | ||
100 | int copy_thread(unsigned long clone_flags, | 99 | int copy_thread(unsigned long clone_flags, |
diff --git a/arch/openrisc/kernel/process.c b/arch/openrisc/kernel/process.c index 386af258591d..7095dfe7666b 100644 --- a/arch/openrisc/kernel/process.c +++ b/arch/openrisc/kernel/process.c | |||
@@ -197,7 +197,6 @@ void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long sp) | |||
197 | { | 197 | { |
198 | unsigned long sr = mfspr(SPR_SR) & ~SPR_SR_SM; | 198 | unsigned long sr = mfspr(SPR_SR) & ~SPR_SR_SM; |
199 | 199 | ||
200 | set_fs(USER_DS); | ||
201 | memset(regs, 0, sizeof(struct pt_regs)); | 200 | memset(regs, 0, sizeof(struct pt_regs)); |
202 | 201 | ||
203 | regs->pc = pc; | 202 | regs->pc = pc; |
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c index 99824ff8dd35..df7d8cbee377 100644 --- a/arch/s390/hypfs/inode.c +++ b/arch/s390/hypfs/inode.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include <linux/module.h> | 21 | #include <linux/module.h> |
22 | #include <linux/seq_file.h> | 22 | #include <linux/seq_file.h> |
23 | #include <linux/mount.h> | 23 | #include <linux/mount.h> |
24 | #include <linux/aio.h> | 24 | #include <linux/uio.h> |
25 | #include <asm/ebcdic.h> | 25 | #include <asm/ebcdic.h> |
26 | #include "hypfs.h" | 26 | #include "hypfs.h" |
27 | 27 | ||
diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c index 0b34f2a704fe..97292890b51b 100644 --- a/arch/sh/kernel/signal_32.c +++ b/arch/sh/kernel/signal_32.c | |||
@@ -329,8 +329,6 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set, | |||
329 | if (err) | 329 | if (err) |
330 | return -EFAULT; | 330 | return -EFAULT; |
331 | 331 | ||
332 | set_fs(USER_DS); | ||
333 | |||
334 | pr_debug("SIG deliver (%s:%d): sp=%p pc=%08lx pr=%08lx\n", | 332 | pr_debug("SIG deliver (%s:%d): sp=%p pc=%08lx pr=%08lx\n", |
335 | current->comm, task_pid_nr(current), frame, regs->pc, regs->pr); | 333 | current->comm, task_pid_nr(current), frame, regs->pc, regs->pr); |
336 | 334 | ||
@@ -408,8 +406,6 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, | |||
408 | if (err) | 406 | if (err) |
409 | return -EFAULT; | 407 | return -EFAULT; |
410 | 408 | ||
411 | set_fs(USER_DS); | ||
412 | |||
413 | pr_debug("SIG deliver (%s:%d): sp=%p pc=%08lx pr=%08lx\n", | 409 | pr_debug("SIG deliver (%s:%d): sp=%p pc=%08lx pr=%08lx\n", |
414 | current->comm, task_pid_nr(current), frame, regs->pc, regs->pr); | 410 | current->comm, task_pid_nr(current), frame, regs->pc, regs->pr); |
415 | 411 | ||
diff --git a/arch/sh/kernel/signal_64.c b/arch/sh/kernel/signal_64.c index 71993c6a7d94..0462995d4d7f 100644 --- a/arch/sh/kernel/signal_64.c +++ b/arch/sh/kernel/signal_64.c | |||
@@ -457,8 +457,6 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs | |||
457 | 457 | ||
458 | regs->pc = neff_sign_extend((unsigned long)ksig->ka.sa.sa_handler); | 458 | regs->pc = neff_sign_extend((unsigned long)ksig->ka.sa.sa_handler); |
459 | 459 | ||
460 | set_fs(USER_DS); | ||
461 | |||
462 | /* Broken %016Lx */ | 460 | /* Broken %016Lx */ |
463 | pr_debug("SIG deliver (#%d,%s:%d): sp=%p pc=%08Lx%08Lx link=%08Lx%08Lx\n", | 461 | pr_debug("SIG deliver (#%d,%s:%d): sp=%p pc=%08Lx%08Lx link=%08Lx%08Lx\n", |
464 | signal, current->comm, current->pid, frame, | 462 | signal, current->comm, current->pid, frame, |
@@ -547,8 +545,6 @@ static int setup_rt_frame(struct ksignal *kig, sigset_t *set, | |||
547 | regs->regs[REG_ARG3] = (unsigned long long)(unsigned long)(signed long)&frame->uc.uc_mcontext; | 545 | regs->regs[REG_ARG3] = (unsigned long long)(unsigned long)(signed long)&frame->uc.uc_mcontext; |
548 | regs->pc = neff_sign_extend((unsigned long)ksig->ka.sa.sa_handler); | 546 | regs->pc = neff_sign_extend((unsigned long)ksig->ka.sa.sa_handler); |
549 | 547 | ||
550 | set_fs(USER_DS); | ||
551 | |||
552 | pr_debug("SIG deliver (#%d,%s:%d): sp=%p pc=%08Lx%08Lx link=%08Lx%08Lx\n", | 548 | pr_debug("SIG deliver (#%d,%s:%d): sp=%p pc=%08Lx%08Lx link=%08Lx%08Lx\n", |
553 | signal, current->comm, current->pid, frame, | 549 | signal, current->comm, current->pid, frame, |
554 | regs->pc >> 32, regs->pc & 0xffffffff, | 550 | regs->pc >> 32, regs->pc & 0xffffffff, |
diff --git a/arch/xtensa/kernel/signal.c b/arch/xtensa/kernel/signal.c index 3d733ba16f28..6b3790445cbe 100644 --- a/arch/xtensa/kernel/signal.c +++ b/arch/xtensa/kernel/signal.c | |||
@@ -405,11 +405,6 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set, | |||
405 | regs->areg[8] = (unsigned long) &frame->uc; | 405 | regs->areg[8] = (unsigned long) &frame->uc; |
406 | regs->threadptr = tp; | 406 | regs->threadptr = tp; |
407 | 407 | ||
408 | /* Set access mode to USER_DS. Nomenclature is outdated, but | ||
409 | * functionality is used in uaccess.h | ||
410 | */ | ||
411 | set_fs(USER_DS); | ||
412 | |||
413 | #if DEBUG_SIG | 408 | #if DEBUG_SIG |
414 | printk("SIG rt deliver (%s:%d): signal=%d sp=%p pc=%08x\n", | 409 | printk("SIG rt deliver (%s:%d): signal=%d sp=%p pc=%08x\n", |
415 | current->comm, current->pid, signal, frame, regs->pc); | 410 | current->comm, current->pid, signal, frame, regs->pc); |