From: Cyrill Gorcunov <gorcunov@gmail.com>
To: Nick Piggin <npiggin@suse.de>
Cc: Christoph Lameter <cl@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Rik van Riel <riel@redhat.com>,
LKML <linux-kernel@vger.kernel.org>,
Jiri Slaby <jirislaby@gmail.com>
Subject: Re: [PATCH] mm: __nr_to_section - make it safe against overflow
Date: Mon, 5 Jan 2009 19:12:41 +0300 [thread overview]
Message-ID: <20090105161241.GJ7645@localhost> (raw)
In-Reply-To: <20090105153406.GB32675@wotan.suse.de>
[Nick Piggin - Mon, Jan 05, 2009 at 04:34:06PM +0100]
| On Mon, Jan 05, 2009 at 06:28:48PM +0300, Cyrill Gorcunov wrote:
| > [Christoph Lameter - Mon, Jan 05, 2009 at 09:10:57AM -0600]
| > | On Mon, 5 Jan 2009, Cyrill Gorcunov wrote:
| > |
| > | > /*
| > | > * This is, logically, a pointer to an array of struct
| > | > @@ -980,9 +986,12 @@ extern struct mem_section mem_section[NR
| > | >
| > | > static inline struct mem_section *__nr_to_section(unsigned long nr)
| > | > {
| > | > - if (!mem_section[SECTION_NR_TO_ROOT(nr)])
| > | > + unsigned long idx = SECTION_NR_TO_ROOT(nr);
| > | > + WARN_ON_ONCE(idx >= NR_SECTION_ROOTS);
| > | > +
| > | > + if (idx >=NR_SECTION_ROOTS || !mem_section[idx])
| > | > return NULL;
| > | > - return &mem_section[SECTION_NR_TO_ROOT(nr)][nr & SECTION_ROOT_MASK];
| > | > + return &mem_section[idx][nr & SECTION_ROOT_MASK];
| > | > }
| > | > extern int __section_nr(struct mem_section* ms);
| > | > extern unsigned long usemap_size(void);
| > |
| > | Not that you are adding code to numerous hot code path. Plus this is a
| > | frequently used inline. Code size is going to increase if you do this.
| >
| > yes, I know, that is why I've changed WARN_ON_ONCE to plain WARN_ON.
|
| Still costs. Putting it under a config option would be nice.
|
|
| > | I would think that the code does not have the tests because of performance
| > | and code size concerns. Can we just say that a sane nr must be passed to
| > | __nr_section?
| > |
| >
| > If you mean did I test this patch for speed regresson then to be fair --
| > no, I didn't. BUT we have a number of macros wich are self protective
| > like present_section which is used havily too. On the other hand --
| > bad argument passed to __nr_to_section will be (and it is now) really
| > harmfull -- since it would allow to reference a memory outside the
| > valid bounds. The second -- SECTION_ROOT_MASK wich is fragile, any
| > attempt to modify mem_section structure will silently lead to insane
| > referencing, that is why it deserve a comment on top of structure.
| >
| > Don't know Christoph, if it really that important to not spend a few
| > cycles here in a sake of safety -- we could easily drop this patch.
|
| The problem with testing every little slowdown for a speed regression
| is that they are just going to be in the noise. But we *know* it will
| go slower. The problem is that they add up. We just have to be sensible
| about it.
|
| Has there ever been a problem here before? Has it been a problem during
| development? (in which case putting it in a .config option might make
| sense).
|
After checking all 'for' and 'against' -- I think I just overzealous
about it. Please drop it. (the case I was concerning to actually protected
by present_section macro anyway). Sorry for noise.
- Cyrill -
next prev parent reply other threads:[~2009-01-05 16:12 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-05 9:40 [PATCH] mm: __nr_to_section - make it safe against overflow Cyrill Gorcunov
2009-01-05 10:00 ` Pekka Enberg
2009-01-05 10:03 ` Cyrill Gorcunov
2009-01-05 10:01 ` Cyrill Gorcunov
2009-01-05 15:10 ` Christoph Lameter
2009-01-05 15:28 ` Cyrill Gorcunov
2009-01-05 15:34 ` Nick Piggin
2009-01-05 16:12 ` Cyrill Gorcunov [this message]
2009-01-05 15:37 ` Christoph Lameter
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=20090105161241.GJ7645@localhost \
--to=gorcunov@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=cl@linux-foundation.org \
--cc=jirislaby@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=npiggin@suse.de \
--cc=riel@redhat.com \
/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.