From: Paul Jackson <pj@sgi.com>
To: Rusty Russell <rusty@rustcorp.com.au>
Cc: linux-kernel@vger.kernel.org, akpm@osdl.org, ak@suse.de, greg@kroah.com
Subject: Re: [PATCH] fix sys cpumap for > 352 NR_CPUS
Date: Thu, 3 Jun 2004 01:27:28 -0700 [thread overview]
Message-ID: <20040603012728.42713a30.pj@sgi.com> (raw)
In-Reply-To: <1086243997.29390.527.camel@bach>
> + BUILD_BUG_ON(NR_CPUS/4 > PAGE_SIZE/2);
Interesting. This would be the only use in the entire kernel of
BUILD_BUG_ON().
An alternative mechanism would be:
#if(badthing) ... #error "darn" ... #endif
There are over 300 such constructs in the kernel. And it has the
advantage of providing an accurate source line number and a specifiable
string.
My preference when checking limits is to check for the exact limit.
Adding fuzz only serves to disguise details. Whether coding correctly,
or screwing up, best to do so with clarity and precision.
Given all that, how about:
#if ALIGN(NR_CPUS,32)*9/32 > PAGE_SIZE
#error "Need 9 bytes space per 32 CPUs in PAGE_SIZE buffer"
#endif
==
I also could be tempted to remove BUILD_BUG_ON() from kernel.h, and
replace it with a comment:
/* BUILD_BUG_ON() obsolete - consider using #if ... #error ... #endif */
==
> + len = cpumask_scnprintf(buf, -1UL, mask);
Why not instead:
> + len = cpumask_scnprintf(buf, PAGE_SIZE-1, mask);
I see no sense in giving cpumask_scnprintf() license to write past the
end of the buffer, independent of any build-time checks (the -1 is for
the trailing newline). And since the contract says "PAGE_SIZE", we
should code exactly to that value "PAGE_SIZE", for clarity as to our
understandings. Once again - I hate fuzz ;).
==
> + BUG_ON(count > PAGE_SIZE);
Only 'BUG_ON' ?? We have in hand almost certain proof of just
having scrogged kernel memory. Time to panic, no?
==
What are we going to do about the removal of the node_dev->cpumap field,
and changing this node_read_cpumap() routine to display instead the
value of node_to_cpumask(node_dev->sysdev.id)?
Should I do it, or you? Should it presume your patch above, or collide
with it, or replace and extend it?
Since I am most impressed with your abilities, since you doubt my
abilities, and since I'm a lazy s.o.b., you're welcome to it. Or if you
prefer to ask me, that's fine. Seems to me this should be two patches -
the one discussed above to limit how many bytes cpumask_scnprintf can
posit, and a second to nuke node_dev->cpumap. The second patch would
depend on the first, for the trivial reason that they collide on some of
the same code.
--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <pj@sgi.com> 1.650.933.1373
next prev parent reply other threads:[~2004-06-03 8:29 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-02 23:11 [PATCH] fix sys cpumap for > 352 NR_CPUS Paul Jackson
2004-06-02 23:23 ` Andrew Morton
2004-06-02 23:59 ` Paul Jackson
2004-06-03 0:17 ` Andrew Morton
2004-06-03 16:24 ` Greg KH
2004-06-03 16:28 ` Paul Jackson
2004-06-03 0:22 ` Rusty Russell
2004-06-03 4:25 ` Paul Jackson
2004-06-03 6:26 ` Rusty Russell
2004-06-03 8:27 ` Paul Jackson [this message]
2004-06-04 1:12 ` Rusty Russell
2004-06-04 2:25 ` Paul Jackson
2004-06-03 15:49 ` Paul Jackson
2004-06-03 4:34 ` Paul Jackson
2004-06-03 4:35 ` Rusty Russell
2004-06-03 16:27 ` Greg KH
2004-06-03 16:38 ` Paul Jackson
2004-06-03 16:51 ` Greg KH
2004-06-04 1:27 ` Rusty Russell
2004-06-04 18:15 ` Greg KH
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=20040603012728.42713a30.pj@sgi.com \
--to=pj@sgi.com \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox