diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-17 11:58:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-17 11:58:04 -0400 |
commit | 57a8ec387e1441ea5e1232bc0749fb99a8cba7e7 (patch) | |
tree | b5fb03fc6bc5754de8b5b1f8b0e4f36d67c8315c /fs/aio.c | |
parent | 0a8ad0ffa4d80a544f6cbff703bf6394339afcdf (diff) | |
parent | 43e11fa2d1d3b6e35629fa556eb7d571edba2010 (diff) |
Merge branch 'akpm' (patches from Andrew)
Merge more updates from Andrew Morton:
"VM:
- z3fold fixes and enhancements by Henry Burns and Vitaly Wool
- more accurate reclaimed slab caches calculations by Yafang Shao
- fix MAP_UNINITIALIZED UAPI symbol to not depend on config, by
Christoph Hellwig
- !CONFIG_MMU fixes by Christoph Hellwig
- new novmcoredd parameter to omit device dumps from vmcore, by
Kairui Song
- new test_meminit module for testing heap and pagealloc
initialization, by Alexander Potapenko
- ioremap improvements for huge mappings, by Anshuman Khandual
- generalize kprobe page fault handling, by Anshuman Khandual
- device-dax hotplug fixes and improvements, by Pavel Tatashin
- enable synchronous DAX fault on powerpc, by Aneesh Kumar K.V
- add pte_devmap() support for arm64, by Robin Murphy
- unify locked_vm accounting with a helper, by Daniel Jordan
- several misc fixes
core/lib:
- new typeof_member() macro including some users, by Alexey Dobriyan
- make BIT() and GENMASK() available in asm, by Masahiro Yamada
- changed LIST_POISON2 on x86_64 to 0xdead000000000122 for better
code generation, by Alexey Dobriyan
- rbtree code size optimizations, by Michel Lespinasse
- convert struct pid count to refcount_t, by Joel Fernandes
get_maintainer.pl:
- add --no-moderated switch to skip moderated ML's, by Joe Perches
misc:
- ptrace PTRACE_GET_SYSCALL_INFO interface
- coda updates
- gdb scripts, various"
[ Using merge message suggestion from Vlastimil Babka, with some editing - Linus ]
* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (100 commits)
fs/select.c: use struct_size() in kmalloc()
mm: add account_locked_vm utility function
arm64: mm: implement pte_devmap support
mm: introduce ARCH_HAS_PTE_DEVMAP
mm: clean up is_device_*_page() definitions
mm/mmap: move common defines to mman-common.h
mm: move MAP_SYNC to asm-generic/mman-common.h
device-dax: "Hotremove" persistent memory that is used like normal RAM
mm/hotplug: make remove_memory() interface usable
device-dax: fix memory and resource leak if hotplug fails
include/linux/lz4.h: fix spelling and copy-paste errors in documentation
ipc/mqueue.c: only perform resource calculation if user valid
include/asm-generic/bug.h: fix "cut here" for WARN_ON for __WARN_TAINT architectures
scripts/gdb: add helpers to find and list devices
scripts/gdb: add lx-genpd-summary command
drivers/pps/pps.c: clear offset flags in PPS_SETPARAMS ioctl
kernel/pid.c: convert struct pid count to refcount_t
drivers/rapidio/devices/rio_mport_cdev.c: NUL terminate some strings
select: shift restore_saved_sigmask_unless() into poll_select_copy_remaining()
select: change do_poll() to return -ERESTARTNOHAND rather than -EINTR
...
Diffstat (limited to 'fs/aio.c')
-rw-r--r-- | fs/aio.c | 20 |
1 files changed, 8 insertions, 12 deletions
@@ -2094,7 +2094,6 @@ SYSCALL_DEFINE6(io_pgetevents, | |||
2094 | const struct __aio_sigset __user *, usig) | 2094 | const struct __aio_sigset __user *, usig) |
2095 | { | 2095 | { |
2096 | struct __aio_sigset ksig = { NULL, }; | 2096 | struct __aio_sigset ksig = { NULL, }; |
2097 | sigset_t ksigmask, sigsaved; | ||
2098 | struct timespec64 ts; | 2097 | struct timespec64 ts; |
2099 | bool interrupted; | 2098 | bool interrupted; |
2100 | int ret; | 2099 | int ret; |
@@ -2105,14 +2104,14 @@ SYSCALL_DEFINE6(io_pgetevents, | |||
2105 | if (usig && copy_from_user(&ksig, usig, sizeof(ksig))) | 2104 | if (usig && copy_from_user(&ksig, usig, sizeof(ksig))) |
2106 | return -EFAULT; | 2105 | return -EFAULT; |
2107 | 2106 | ||
2108 | ret = set_user_sigmask(ksig.sigmask, &ksigmask, &sigsaved, ksig.sigsetsize); | 2107 | ret = set_user_sigmask(ksig.sigmask, ksig.sigsetsize); |
2109 | if (ret) | 2108 | if (ret) |
2110 | return ret; | 2109 | return ret; |
2111 | 2110 | ||
2112 | ret = do_io_getevents(ctx_id, min_nr, nr, events, timeout ? &ts : NULL); | 2111 | ret = do_io_getevents(ctx_id, min_nr, nr, events, timeout ? &ts : NULL); |
2113 | 2112 | ||
2114 | interrupted = signal_pending(current); | 2113 | interrupted = signal_pending(current); |
2115 | restore_user_sigmask(ksig.sigmask, &sigsaved, interrupted); | 2114 | restore_saved_sigmask_unless(interrupted); |
2116 | if (interrupted && !ret) | 2115 | if (interrupted && !ret) |
2117 | ret = -ERESTARTNOHAND; | 2116 | ret = -ERESTARTNOHAND; |
2118 | 2117 | ||
@@ -2130,7 +2129,6 @@ SYSCALL_DEFINE6(io_pgetevents_time32, | |||
2130 | const struct __aio_sigset __user *, usig) | 2129 | const struct __aio_sigset __user *, usig) |
2131 | { | 2130 | { |
2132 | struct __aio_sigset ksig = { NULL, }; | 2131 | struct __aio_sigset ksig = { NULL, }; |
2133 | sigset_t ksigmask, sigsaved; | ||
2134 | struct timespec64 ts; | 2132 | struct timespec64 ts; |
2135 | bool interrupted; | 2133 | bool interrupted; |
2136 | int ret; | 2134 | int ret; |
@@ -2142,14 +2140,14 @@ SYSCALL_DEFINE6(io_pgetevents_time32, | |||
2142 | return -EFAULT; | 2140 | return -EFAULT; |
2143 | 2141 | ||
2144 | 2142 | ||
2145 | ret = set_user_sigmask(ksig.sigmask, &ksigmask, &sigsaved, ksig.sigsetsize); | 2143 | ret = set_user_sigmask(ksig.sigmask, ksig.sigsetsize); |
2146 | if (ret) | 2144 | if (ret) |
2147 | return ret; | 2145 | return ret; |
2148 | 2146 | ||
2149 | ret = do_io_getevents(ctx_id, min_nr, nr, events, timeout ? &ts : NULL); | 2147 | ret = do_io_getevents(ctx_id, min_nr, nr, events, timeout ? &ts : NULL); |
2150 | 2148 | ||
2151 | interrupted = signal_pending(current); | 2149 | interrupted = signal_pending(current); |
2152 | restore_user_sigmask(ksig.sigmask, &sigsaved, interrupted); | 2150 | restore_saved_sigmask_unless(interrupted); |
2153 | if (interrupted && !ret) | 2151 | if (interrupted && !ret) |
2154 | ret = -ERESTARTNOHAND; | 2152 | ret = -ERESTARTNOHAND; |
2155 | 2153 | ||
@@ -2198,7 +2196,6 @@ COMPAT_SYSCALL_DEFINE6(io_pgetevents, | |||
2198 | const struct __compat_aio_sigset __user *, usig) | 2196 | const struct __compat_aio_sigset __user *, usig) |
2199 | { | 2197 | { |
2200 | struct __compat_aio_sigset ksig = { NULL, }; | 2198 | struct __compat_aio_sigset ksig = { NULL, }; |
2201 | sigset_t ksigmask, sigsaved; | ||
2202 | struct timespec64 t; | 2199 | struct timespec64 t; |
2203 | bool interrupted; | 2200 | bool interrupted; |
2204 | int ret; | 2201 | int ret; |
@@ -2209,14 +2206,14 @@ COMPAT_SYSCALL_DEFINE6(io_pgetevents, | |||
2209 | if (usig && copy_from_user(&ksig, usig, sizeof(ksig))) | 2206 | if (usig && copy_from_user(&ksig, usig, sizeof(ksig))) |
2210 | return -EFAULT; | 2207 | return -EFAULT; |
2211 | 2208 | ||
2212 | ret = set_compat_user_sigmask(ksig.sigmask, &ksigmask, &sigsaved, ksig.sigsetsize); | 2209 | ret = set_compat_user_sigmask(ksig.sigmask, ksig.sigsetsize); |
2213 | if (ret) | 2210 | if (ret) |
2214 | return ret; | 2211 | return ret; |
2215 | 2212 | ||
2216 | ret = do_io_getevents(ctx_id, min_nr, nr, events, timeout ? &t : NULL); | 2213 | ret = do_io_getevents(ctx_id, min_nr, nr, events, timeout ? &t : NULL); |
2217 | 2214 | ||
2218 | interrupted = signal_pending(current); | 2215 | interrupted = signal_pending(current); |
2219 | restore_user_sigmask(ksig.sigmask, &sigsaved, interrupted); | 2216 | restore_saved_sigmask_unless(interrupted); |
2220 | if (interrupted && !ret) | 2217 | if (interrupted && !ret) |
2221 | ret = -ERESTARTNOHAND; | 2218 | ret = -ERESTARTNOHAND; |
2222 | 2219 | ||
@@ -2234,7 +2231,6 @@ COMPAT_SYSCALL_DEFINE6(io_pgetevents_time64, | |||
2234 | const struct __compat_aio_sigset __user *, usig) | 2231 | const struct __compat_aio_sigset __user *, usig) |
2235 | { | 2232 | { |
2236 | struct __compat_aio_sigset ksig = { NULL, }; | 2233 | struct __compat_aio_sigset ksig = { NULL, }; |
2237 | sigset_t ksigmask, sigsaved; | ||
2238 | struct timespec64 t; | 2234 | struct timespec64 t; |
2239 | bool interrupted; | 2235 | bool interrupted; |
2240 | int ret; | 2236 | int ret; |
@@ -2245,14 +2241,14 @@ COMPAT_SYSCALL_DEFINE6(io_pgetevents_time64, | |||
2245 | if (usig && copy_from_user(&ksig, usig, sizeof(ksig))) | 2241 | if (usig && copy_from_user(&ksig, usig, sizeof(ksig))) |
2246 | return -EFAULT; | 2242 | return -EFAULT; |
2247 | 2243 | ||
2248 | ret = set_compat_user_sigmask(ksig.sigmask, &ksigmask, &sigsaved, ksig.sigsetsize); | 2244 | ret = set_compat_user_sigmask(ksig.sigmask, ksig.sigsetsize); |
2249 | if (ret) | 2245 | if (ret) |
2250 | return ret; | 2246 | return ret; |
2251 | 2247 | ||
2252 | ret = do_io_getevents(ctx_id, min_nr, nr, events, timeout ? &t : NULL); | 2248 | ret = do_io_getevents(ctx_id, min_nr, nr, events, timeout ? &t : NULL); |
2253 | 2249 | ||
2254 | interrupted = signal_pending(current); | 2250 | interrupted = signal_pending(current); |
2255 | restore_user_sigmask(ksig.sigmask, &sigsaved, interrupted); | 2251 | restore_saved_sigmask_unless(interrupted); |
2256 | if (interrupted && !ret) | 2252 | if (interrupted && !ret) |
2257 | ret = -ERESTARTNOHAND; | 2253 | ret = -ERESTARTNOHAND; |
2258 | 2254 | ||