Re: [PATCH net-next v6 4/4] eventpoll: Add epoll ioctl for epoll_params
From: Joe Damato <hidden>
Date: 2024-02-07 18:50:19
Also in:
linux-api, linux-doc, linux-fsdevel, lkml
On Wed, Feb 07, 2024 at 09:37:14AM +0100, Jiri Slaby wrote:
On 05. 02. 24, 22:04, Joe Damato wrote:quoted
Add an ioctl for getting and setting epoll_params. User programs can use this ioctl to get and set the busy poll usec time, packet budget, and prefer busy poll params for a specific epoll context. Parameters are limited: - busy_poll_usecs is limited to <= u32_max - busy_poll_budget is limited to <= NAPI_POLL_WEIGHT by unprivileged users (!capable(CAP_NET_ADMIN)) - prefer_busy_poll must be 0 or 1 - __pad must be 0 Signed-off-by: Joe Damato <redacted>...quoted
--- a/fs/eventpoll.c +++ b/fs/eventpoll.c...quoted
@@ -497,6 +498,50 @@ static inline void ep_set_busy_poll_napi_id(struct epitem *epi) ep->napi_id = napi_id; } +static long ep_eventpoll_bp_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + struct eventpoll *ep; + struct epoll_params epoll_params; + void __user *uarg = (void __user *) arg; + + ep = file->private_data;This might have been on the ep declaration line.quoted
+ switch (cmd) { + case EPIOCSPARAMS: + if (copy_from_user(&epoll_params, uarg, sizeof(epoll_params))) + return -EFAULT; + + if (memchr_inv(epoll_params.__pad, 0, sizeof(epoll_params.__pad))) + return -EINVAL; + + if (epoll_params.busy_poll_usecs > U32_MAX) + return -EINVAL; + + if (epoll_params.prefer_busy_poll > 1) + return -EINVAL; + + if (epoll_params.busy_poll_budget > NAPI_POLL_WEIGHT && + !capable(CAP_NET_ADMIN)) + return -EPERM; + + ep->busy_poll_usecs = epoll_params.busy_poll_usecs; + ep->busy_poll_budget = epoll_params.busy_poll_budget; + ep->prefer_busy_poll = !!epoll_params.prefer_busy_poll;This !! is unnecessary. Nonzero values shall be "converted" to true. But FWIW, the above is nothing which should be blocking, so:
">
Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
netdev maintainers: Jiri marked this with Reviewed-by, but was this review what caused "Changes Requested" to be the status set for this patch set in patchwork? If needed, I'll send a v7 with the changes Jiri suggested and add the "Reviewed-by" since the changes are cosmetic, but I wanted to make sure this was the reason. Thanks.