On Thu, Jul 18, 2019 at 10:56:34PM +0800, Herbert Xu wrote: > On Thu, Jul 18, 2019 at 10:27:30AM -0400, Daniel Jordan wrote: > > > > That's what I expected when I first saw it too, but nr_cpumask_bits is returned > > to signal the end of the iteration. The patch always passes 0 for the 'start' > > argument, so when cpumask_next_wrap is called with the last cpu in the mask, > > the end-of-iteration case is triggered. To reassure you and myself :) I ran it > > and got the expected crash. > > > > Passing pd->cpu for the start argument instead avoids that problem, but the > > one-cpu-in-mask case still needs handling because cpumask_next_wrap always > > signals end of iteration for that, hence the cpumask_weight check. > > My bad. I should have set start to -1 to make it do the right thing. Oh, you're right, that's nicer, just noticed other callers do it that way as well.