From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: Question about grant table Date: Tue, 24 Apr 2012 08:58:00 +0100 Message-ID: <4F967928020000780007F84A@nat28.tlf.novell.com> References: <1335215633.81955.YahooMailNeo@web124503.mail.ne1.yahoo.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1335215633.81955.YahooMailNeo@web124503.mail.ne1.yahoo.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ruslan Nikolaev Cc: "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org >>> On 23.04.12 at 23:13, Ruslan Nikolaev wrote: > Hi > > I have a question regarding a grant table. I have a case when I have some > shared (between domains) pages mapped to the user space. I created a special > driver which implements mmap(). That, in turns, will execute > gnttab_map_refs(). This all works fine until I want to do something like > exec(). > > After I do exec(), I want to mmap() the *same* pages (i.e. using the same > grant references) to some new user address space which is chosen by mmap(). > During exec(), it will invalidate user address space, and release() from > mmu_notifier will be called. This means, that my driver will execute > gnttab_unmap_refs. After exec() succeeded, I invoke mmap() again which will > do gnttab_map_refs(). > > At this point I get kernel errors like this: > [ 198.939095] BUG: Bad page map in process a.out pte:80000002457f1167 > pmd:245094067 > [ 198.939099] page:ffffea000915fc40 count:1 mapcount:-1 mapping: > (null) index:0xffff8802d958f720 > [ 198.939102] page flags: 0x8000000000000814(referenced|dirty|private) > [ 198.939109] addr:00007fd302f40000 vm_flags:000e00fb anon_vma: > (null) mapping:ffff8802d782f760 index:0 > [ 198.939124] vma->vm_ops->fault: 0x0 > [ 198.939128] vma->vm_file->f_op->mmap: syscall_driver_mmap+0x0/0xc9 > [syscall_driver] This I cannot spot in the upstream kernel (and you also didn't indicate that you use something different), so I think you need to start investigation at that end. Jan > So, I have two questions in this regard: > 1. Does gnttab_unmap_refs removes grant references, so that I cannot use > them any longer? What would be proper way to preserve grant references but at > the same time unmap from the current user address space shared pages? > > 2. What happens to the counters like count, mapcount when I do > gnttab_map_refs() and gnntab_unmap_refs()? > > Thanks, > Ruslan > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel