diff options
Diffstat (limited to 'fs/eventpoll.c')
-rw-r--r-- | fs/eventpoll.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/fs/eventpoll.c b/fs/eventpoll.c index 4c74c768ae43..0f9c073d78d5 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c | |||
@@ -2313,19 +2313,17 @@ SYSCALL_DEFINE6(epoll_pwait, int, epfd, struct epoll_event __user *, events, | |||
2313 | size_t, sigsetsize) | 2313 | size_t, sigsetsize) |
2314 | { | 2314 | { |
2315 | int error; | 2315 | int error; |
2316 | sigset_t ksigmask, sigsaved; | ||
2317 | 2316 | ||
2318 | /* | 2317 | /* |
2319 | * If the caller wants a certain signal mask to be set during the wait, | 2318 | * If the caller wants a certain signal mask to be set during the wait, |
2320 | * we apply it here. | 2319 | * we apply it here. |
2321 | */ | 2320 | */ |
2322 | error = set_user_sigmask(sigmask, &ksigmask, &sigsaved, sigsetsize); | 2321 | error = set_user_sigmask(sigmask, sigsetsize); |
2323 | if (error) | 2322 | if (error) |
2324 | return error; | 2323 | return error; |
2325 | 2324 | ||
2326 | error = do_epoll_wait(epfd, events, maxevents, timeout); | 2325 | error = do_epoll_wait(epfd, events, maxevents, timeout); |
2327 | 2326 | restore_saved_sigmask_unless(error == -EINTR); | |
2328 | restore_user_sigmask(sigmask, &sigsaved, error == -EINTR); | ||
2329 | 2327 | ||
2330 | return error; | 2328 | return error; |
2331 | } | 2329 | } |
@@ -2338,19 +2336,17 @@ COMPAT_SYSCALL_DEFINE6(epoll_pwait, int, epfd, | |||
2338 | compat_size_t, sigsetsize) | 2336 | compat_size_t, sigsetsize) |
2339 | { | 2337 | { |
2340 | long err; | 2338 | long err; |
2341 | sigset_t ksigmask, sigsaved; | ||
2342 | 2339 | ||
2343 | /* | 2340 | /* |
2344 | * If the caller wants a certain signal mask to be set during the wait, | 2341 | * If the caller wants a certain signal mask to be set during the wait, |
2345 | * we apply it here. | 2342 | * we apply it here. |
2346 | */ | 2343 | */ |
2347 | err = set_compat_user_sigmask(sigmask, &ksigmask, &sigsaved, sigsetsize); | 2344 | err = set_compat_user_sigmask(sigmask, sigsetsize); |
2348 | if (err) | 2345 | if (err) |
2349 | return err; | 2346 | return err; |
2350 | 2347 | ||
2351 | err = do_epoll_wait(epfd, events, maxevents, timeout); | 2348 | err = do_epoll_wait(epfd, events, maxevents, timeout); |
2352 | 2349 | restore_saved_sigmask_unless(err == -EINTR); | |
2353 | restore_user_sigmask(sigmask, &sigsaved, err == -EINTR); | ||
2354 | 2350 | ||
2355 | return err; | 2351 | return err; |
2356 | } | 2352 | } |