All of lore.kernel.org
 help / color / mirror / Atom feed
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 = &pm;
+
 	if (!ptrace_may_attach(task)) {
 		ret = -EIO;
 	} else {
_


  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.