On Tue, Oct 16, 2007 at 02:31:25AM +0900, Atsushi Nemoto wrote:
> On Mon, 15 Oct 2007 16:47:30 +0100, email@example.com wrote:
> > Turns out 6a36458d9348265327d074bdd40bfb1c5b6fb2cb wasn't quite right.
> > When called for a page that isn't marked dirty it would artificially
> > create an alias instead of doing the obvious thing and access the page
> > via KSEG0.
> > The same issue also exists in copy_to_user_page and copy_from_user_page
> > which was causing the machine to die under rare circumstances for example
> > when running ps if the BUG_ON() assertion added by the earlier fix was
> > getting triggered.
> This commit added a SetPageDcacheDirty() call for both
> copy_to_user_page() and copy_from_user_page(). The call in
> copy_from_user_page() is really needed?
After copy_from_user_page the page will reside in the D-cache. So just
in case it ever gets mapped to userspace and modified there we better
make sure its kernel address will get flushed before mapping it to user
space. If not, we might see stale data if the page got modified under
its userspace address.