Messages in this thread | | | From | "Huang\, Ying" <> | Subject | Re: [PATCH v2] mm/swapfile.c: simplify the scan loop in scan_swap_map_slots() | Date | Sun, 26 Apr 2020 09:07:11 +0800 |
| |
Wei Yang <richard.weiyang@gmail.com> writes:
> On Fri, Apr 24, 2020 at 10:02:58AM +0800, Huang, Ying wrote: >>Wei Yang <richard.weiyang@gmail.com> writes: >> > [...] >>>> >>>>if "offset > si->highest_bit" is true and "offset < scan_base" is true, >>>>scan_base need to be returned. >>>> >>> >>> When this case would happen in the original code? >> >>In the original code, the loop can still stop. >> > > Sorry, I don't get your point yet. > > In original code, there are two separate loops > > while (++offset <= si->highest_bit) { > } > > while (offset < scan_base) { > } > > And for your condition, (offset > highest_bit) && (offset < scan_base), which > terminates the first loop and fits the second loop well. > > Not sure how this condition would stop the loop in original code?
Per my understanding, in your code, if some other task changes si->highest_bit to be less than scan_base in parallel. The loop may cannot stop.
Best Regards, Huang, Ying
>>Best Regards, >>Huang, Ying >> >>>>Again, the new code doesn't make it easier to find this kind of issues. >>>> >>>>Best Regards, >>>>Huang, Ying
| |