On Thu, Oct 6, 2022 at 7:01 AM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > On Thu, Oct 06, 2022 at 06:33:15AM -0600, Jason A. Donenfeld wrote: > > On Thu, Oct 06, 2022 at 10:43:31AM +0200, Jan Kara wrote: > > ... > > > > The code here is effectively doing the > > > > > > parent_group = prandom_u32_max(ngroups); > > > > > > Similarly here we can use prandom_u32_max(ngroups) like: > > > > > > if (qstr) { > > > ... > > > parent_group = hinfo.hash % ngroups; > > > } else > > > parent_group = prandom_u32_max(ngroups); > > > > Nice catch. I'll move these to patch #1. > > I believe coccinelle is able to handle this kind of code as well I'd be extremely surprised. The details were kind of non obvious. I just spent a decent amount of time manually checking those blocks, to make sure we didn't wind up with different behavior, given the variable reuse. Jason