y...@mwd.biglobe.ne.jp (YAMAMOTO Takashi) wrote: > >> > Log Message: > >> > amap_copy(): Keep the source amap locked until its lock has been > >> > copied. > >> > >> btw, this code seems to assume that uvm_anfree does not release the > >> lock even temporarily while the comment on uvm_anfree1 says the > >> opposite. > > > > http://www.netbsd.org/~rmind/uvm_anon_freelst.diff > > > > Looks good? > > i don't understand what it solves. can you explain a little?
Here is the updated patch after your changes: http://www.netbsd.org/~rmind/uvm_anon_freelst2.diff As you noted, uvm_anfree() can temporarily release the amap lock - that can happen in amap_copy(). Patch closes the race by moving uvm_anfree() further, and changes the semantics of the function, now called uvm_anon_freelst(), to return with amap lock released (plus free anons without lock held). -- Mindaugas