[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CA+55aFx67hC3RxvAXYXWp=6mN_cfyMVqh_TDJVEqiV17o8+PtA@mail.gmail.com>
Date: Wed, 29 Apr 2015 13:33:54 -0700
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: "Kirill A. Shutemov" <kirill@...temov.name>
Cc: Mark Williamson <mwilliamson@...o-software.com>,
Mark Seaborn <mseaborn@...omium.org>,
kernel list <linux-kernel@...r.kernel.org>,
"Kirill A. Shutemov" <kirill.shutemov@...ux.intel.com>,
Pavel Emelyanov <xemul@...allels.com>,
Konstantin Khlebnikov <khlebnikov@...nvz.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Andy Lutomirski <luto@...capital.net>,
Linux API <linux-api@...r.kernel.org>,
Finn Grimwood <fgrimwood@...o-software.com>,
Daniel James <djames@...o-software.com>
Subject: Re: Regression: Requiring CAP_SYS_ADMIN for /proc/<pid>/pagemap
causes application-level breakage
On Wed, Apr 29, 2015 at 12:36 PM, Kirill A. Shutemov
<kirill@...temov.name> wrote:
>
> Emm.. I have hard time to understand how writable bit is enough to get
> soft-dirty-alike functionality.
I don't think it is.
For anonymous pages, maybe you can play tricks with comparing the page
'anon_vma' with the vma->anon_vma.
I haven't really thought that through, but does something like
static inline bool page_is_dirty_in_vma(struct page *page, struct
vm_area_struct *vma)
{
struct anon_vma *anon_vma = vma->anon_vma;
return page->mapping == (void *)anon_vma + PAGE_MAPPING_ANON;
}
end up working as a "page has been dirtied in this mapping"?
If the page came from another process and hasn't been written to, it
will have the anon_vma pointing to the originalting vma.
I may be high on some bad drugs, though. As mentioned, I didn't really
think this through.
Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists