[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Question about grant table
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] 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@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |