On Mon, Jun 05, 2023 at 02:20:03PM -0700, Stefan Roesch wrote: > This introduces the napi_busy_loop_rcu() function. If the caller of > napi_busy_loop() function is also taking the rcu read lock, it is possible > that napi_busy_loop() is releasing the read lock if it invokes schedule. > However the caller is expecting that the rcu read lock is not released > until the function completes. This new function avoids that problem. It > expects that the caller MUST hold the rcu_read_lock while calling this > function. > > Signed-off-by: Stefan Roesch <shr@xxxxxxxxxxxx> Hi Stefan, some minor nits from my side, which you may want to consider if you need to spin a v15 for some reason. ... > diff --git a/net/core/dev.c b/net/core/dev.c > index f4677aa20f84..fcd4a6a70646 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -6213,6 +6213,37 @@ static inline void __napi_busy_poll(struct napi_busy_poll_ctx *ctx, > LINUX_MIB_BUSYPOLLRXPACKETS, work); > local_bh_enable(); > } > + > +/* > + * Warning: can exit without calling need_resched(). > + */ For historical reasons, multi-line comments in Networking code are like this. /* Something * more */ Though I notice that dev.c doesn't follow this too closely, perhaps for other historical reasons. Anyway, in this case I'd suggest a single like comment. Unless there is something more to say. /* Warning: can exit without calling need_resched(). */ > +void napi_busy_loop_rcu(unsigned int napi_id, > + bool (*loop_end)(void *, unsigned long), > + void *loop_end_arg, bool prefer_busy_poll, u16 budget) The indentation of the above two likes should align with the inside of the opening parentheses. void napi_busy_loop_rcu(unsigned int napi_id, bool (*loop_end)(void *, unsigned long), void *loop_end_arg, bool prefer_busy_poll, u16 budget) ...