Skip to content

Commit 1954c4f

Browse files
edumazettorvalds
authored andcommitted
eventpoll: Convert epoll_put_uevent() to scoped user access
Saves two function calls, and one stac/clac pair. stac/clac is rather expensive on older cpus like Zen 2. A synthetic network stress test gives a ~1.5% increase of pps on AMD Zen 2. Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Christophe Leroy <christophe.leroy@csgroup.eu> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Kuniyuki Iwashima <kuniyu@google.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 3b5d535 commit 1954c4f

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

include/linux/eventpoll.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,14 @@ static inline struct epoll_event __user *
8282
epoll_put_uevent(__poll_t revents, __u64 data,
8383
struct epoll_event __user *uevent)
8484
{
85-
if (__put_user(revents, &uevent->events) ||
86-
__put_user(data, &uevent->data))
87-
return NULL;
88-
85+
scoped_user_write_access_size(uevent, sizeof(*uevent), efault) {
86+
unsafe_put_user(revents, &uevent->events, efault);
87+
unsafe_put_user(data, &uevent->data, efault);
88+
}
8989
return uevent+1;
90+
91+
efault:
92+
return NULL;
9093
}
9194
#endif
9295

0 commit comments

Comments
 (0)