From: Andrew Morton <akpm@linux-foundation.org>
To: "Alexey Dobriyan" <adobriyan@gmail.com>
Cc: torvalds@linuxfoundation.org, akpm@linuxfoundation.org,
mpm@selenic.com, linux-kernel@vger.kernel.org
Subject: Re: *sigh* /proc/*/pagemap
Date: Fri, 4 Jul 2008 18:53:12 -0700 [thread overview]
Message-ID: <20080704185312.052e7145.akpm@linux-foundation.org> (raw)
In-Reply-To: <b6fcc0a0807041807p24cce461m419d7b54fce72d34@mail.gmail.com>
On Sat, 5 Jul 2008 05:07:02 +0400 "Alexey Dobriyan" <adobriyan@gmail.com> wrote:
> I'm few days from my patch-sending facility, but could someone
> _please_ do the following before release:
>
> 1) initialize pagemap_walk.mm to "mm" , so the code starts working as
> advertised, and
> 2) also initialize ->private to "&pm" so it wouldn't immediately oops
> in pagemap_pte_hole(), and
Geeze you're picky! If everyone was like you we wouldn't need that
nice oops-printing code.
> 3) unstatic struct pagemap_walk, so two threads won't fsckup each other
> (including those started by root, including flipping ->mm when you
> don't have permissions),
Below
> and
> 4) remove second ptrace_may_attach(), and
Can't find what you're referring to here.
> 5) check with microscope allocation there -- page-aligned address and size == 0
> should allocate 0 bytes, and
Where?
> 6) actually check that it works.
Will have a shot.
From: Andrew Morton <akpm@linux-foundation.org>
- initialize pagemap_walk.mm to "mm" , so the code starts working as
advertised
- initialize ->private to "&pm" so it wouldn't immediately oops in
pagemap_pte_hole()
- unstatic struct pagemap_walk, so two threads won't fsckup each other
(including those started by root, including flipping ->mm when you don't
have permissions)
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
fs/proc/task_mmu.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff -puN fs/proc/task_mmu.c~pagemap-fixes-to-pagemap_read fs/proc/task_mmu.c
--- a/fs/proc/task_mmu.c~pagemap-fixes-to-pagemap_read
+++ a/fs/proc/task_mmu.c
@@ -602,11 +602,6 @@ static int pagemap_pte_range(pmd_t *pmd,
return err;
}
-static struct mm_walk pagemap_walk = {
- .pmd_entry = pagemap_pte_range,
- .pte_hole = pagemap_pte_hole
-};
-
/*
* /proc/pid/pagemap - an array mapping virtual pages to pfns
*
@@ -641,6 +636,7 @@ static ssize_t pagemap_read(struct file
struct pagemapread pm;
int pagecount;
int ret = -ESRCH;
+ static struct mm_walk pagemap_walk;
if (!task)
goto out;
@@ -659,6 +655,7 @@ static ssize_t pagemap_read(struct file
if (!mm)
goto out_task;
+
ret = -ENOMEM;
uaddr = (unsigned long)buf & PAGE_MASK;
uend = (unsigned long)(buf + count);
@@ -684,6 +681,11 @@ static ssize_t pagemap_read(struct file
pm.out = (u64 *)buf;
pm.end = (u64 *)(buf + count);
+ pagemap_walk.pmd_entry = pagemap_pte_range;
+ pagemap_walk.pte_hole = pagemap_pte_hole;
+ pagemap_walk.mm = mm;
+ pagemap_walk.private = ±
+
if (!ptrace_may_attach(task)) {
ret = -EIO;
} else {
_
next prev parent reply other threads:[~2008-07-05 1:53 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-05 1:07 *sigh* /proc/*/pagemap Alexey Dobriyan
2008-07-05 1:53 ` Andrew Morton [this message]
2008-07-05 7:44 ` Alexey Dobriyan
2008-07-05 8:02 ` Andrew Morton
[not found] ` <28fa9c5e0807161906q68411e9bn5975dc277f67b086@mail.gmail.com>
2008-07-17 20:17 ` Alexey Dobriyan
2008-07-05 17:40 ` Linus Torvalds
2008-07-07 18:23 ` Matt Mackall
2008-07-07 18:34 ` Linus Torvalds
2008-07-07 18:51 ` Matt Mackall
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=20080704185312.052e7145.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=adobriyan@gmail.com \
--cc=akpm@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mpm@selenic.com \
--cc=torvalds@linuxfoundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.