Messages in this thread | | | Date | Thu, 15 May 2014 11:17:34 +0100 | From | Catalin Marinas <> | Subject | Re: [RFC][PATCH 2/2] ARM: ioremap: Add IO mapping space reused support. |
| |
On Tue, May 13, 2014 at 09:45:08AM +0800, Richard Lee wrote: > > On Mon, May 12, 2014 at 3:51 PM, Arnd Bergmann <arnd@arndb.de> wrote: > > On Monday 12 May 2014 10:19:55 Richard Lee wrote: > >> For the IO mapping, for the same physical address space maybe > >> mapped more than one time, for example, in some SoCs: > >> 0x20000000 ~ 0x20001000: are global control IO physical map, > >> and this range space will be used by many drivers. > >> And then if each driver will do the same ioremap operation, we > >> will waste to much malloc virtual spaces. > >> > >> This patch add IO mapping space reused support. > >> > >> Signed-off-by: Richard Lee <superlibj@gmail.com> > > > > What happens if the first driver then unmaps the area? > > If the first driver will unmap the area, it shouldn't do any thing > except decreasing the 'used' counter.
It's still racy. What if the first driver manage to decrement the used counter, unmaps the regions but doesn't yet free the vm_struct while another driver finds the vm_struct, increments the used count and assumes it can use it?
BTW, vm_area_is_aready_to_free() name implies a query but it has side-effects like decrementing the counter.
-- Catalin
| |