From: Pete Wyckoff <pw@osc.edu>
To: Dan Maas <dmaas@dcine.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: forcibly unmap pages in driver?
Date: Tue, 5 Jun 2001 18:21:20 -0400 [thread overview]
Message-ID: <20010605182120.F23799@osc.edu> (raw)
In-Reply-To: <04ea01c0ed67$ad3f38f0$0701a8c0@morph>
In-Reply-To: <04ea01c0ed67$ad3f38f0$0701a8c0@morph>; from dmaas@dcine.com on Mon, Jun 04, 2001 at 10:31:50PM -0400
dmaas@dcine.com said:
> I am writing a device driver that, like many others, exposes a shared memory
> region to user-space via mmap(). The region is allocated with vmalloc(), the
> pages are marked reserved, and the user-space mapping is implemented with
> remap_page_range().
>
> In my driver, I may have to free the underlying vmalloc() region while the
> user-space program is still running. I need to remove the user-space
> mapping -- otherwise the user process would still have access to the
> now-freed pages. I need an inverse of remap_page_range().
>
> Is zap_page_range() the function I am looking for? Unfortunately it's not
> exported to modules =(. As a quick fix, I was thinking I could just remap
> all of the user pages to point to a zeroed page or something...
>
> Another question- in the mm.c sources, I see that many of the memory-mapping
> functions are surrounded by calls to flush_cache_range() and
> flush_tlb_range(). But I don't see these calls in many drivers. Is it
> necessary to make them when my driver maps or unmaps the shared memory
> region?
That seems a bit perverse. How will the poor userspace program know
not to access the pages you have yanked away from it? If you plan
to kill it, better to do that directly. If you plan to signal it
that the mapping is gone, it can just call munmap() itself.
However, do_munmap() will call zap_page_range() for you and take care of
cache and TLB flushing if you're going to do this in the kernel.
Your driver mmap function is called by do_mmap_pgoff() which takes
care of those issues, and there is no (*munmap) in file_operations---
perhaps you are the first driver writer to want to unmap in the kernel.
-- Pete
next prev parent reply other threads:[~2001-06-05 22:21 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-06-05 2:31 forcibly unmap pages in driver? Dan Maas
2001-06-05 22:21 ` Pete Wyckoff [this message]
2001-06-05 23:15 ` Dan Maas
2001-06-05 23:31 ` Pete Wyckoff
2001-06-06 0:13 ` Dan Maas
2001-06-06 8:07 ` Martin Diehl
[not found] <fa.fk487iv.1d2ksb0@ifi.uio.no>
[not found] ` <fa.f3ckgov.ti0mb3@ifi.uio.no>
2001-06-07 3:46 ` Dan Maas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20010605182120.F23799@osc.edu \
--to=pw@osc.edu \
--cc=dmaas@dcine.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox