* [PATCH] proc: make proc entry's len "unsigned int"
@ 2010-11-26 21:10 Alexey Dobriyan
2010-11-26 23:58 ` Joe Perches
2011-01-05 0:51 ` Andrew Morton
0 siblings, 2 replies; 4+ messages in thread
From: Alexey Dobriyan @ 2010-11-26 21:10 UTC (permalink / raw)
To: akpm; +Cc: linux-kernel
Space is not really conserved, because of natural alignment for the next field.
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---
fs/proc/generic.c | 8 ++++----
include/linux/proc_fs.h | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
--- a/fs/proc/generic.c
+++ b/fs/proc/generic.c
@@ -28,7 +28,7 @@
DEFINE_SPINLOCK(proc_subdir_lock);
-static int proc_match(int len, const char *name, struct proc_dir_entry *de)
+static int proc_match(unsigned int len, const char *name, struct proc_dir_entry *de)
{
if (de->namelen != len)
return 0;
@@ -303,7 +303,7 @@ static int __xlate_proc_name(const char *name, struct proc_dir_entry **ret,
{
const char *cp = name, *next;
struct proc_dir_entry *de;
- int len;
+ unsigned int len;
de = *ret;
if (!de)
@@ -605,7 +605,7 @@ static struct proc_dir_entry *__proc_create(struct proc_dir_entry **parent,
{
struct proc_dir_entry *ent = NULL;
const char *fn = name;
- int len;
+ unsigned int len;
/* make sure name is valid */
if (!name || !strlen(name)) goto out;
@@ -794,7 +794,7 @@ void remove_proc_entry(const char *name, struct proc_dir_entry *parent)
struct proc_dir_entry **p;
struct proc_dir_entry *de = NULL;
const char *fn = name;
- int len;
+ unsigned int len;
spin_lock(&proc_subdir_lock);
if (__xlate_proc_name(name, &parent, &fn) != 0) {
--- a/include/linux/proc_fs.h
+++ b/include/linux/proc_fs.h
@@ -50,7 +50,7 @@ typedef int (write_proc_t)(struct file *file, const char __user *buffer,
struct proc_dir_entry {
unsigned int low_ino;
- unsigned short namelen;
+ unsigned int namelen;
const char *name;
mode_t mode;
nlink_t nlink;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] proc: make proc entry's len "unsigned int"
2010-11-26 21:10 [PATCH] proc: make proc entry's len "unsigned int" Alexey Dobriyan
@ 2010-11-26 23:58 ` Joe Perches
2011-01-05 0:51 ` Andrew Morton
1 sibling, 0 replies; 4+ messages in thread
From: Joe Perches @ 2010-11-26 23:58 UTC (permalink / raw)
To: Alexey Dobriyan; +Cc: akpm, linux-kernel
On Fri, 2010-11-26 at 23:10 +0200, Alexey Dobriyan wrote:
> Space is not really conserved, because of natural alignment for the next field.
It can be. Depends on the arch.
> Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
[]
> --- a/include/linux/proc_fs.h
> +++ b/include/linux/proc_fs.h
> @@ -50,7 +50,7 @@ typedef int (write_proc_t)(struct file *file, const char __user *buffer,
>
> struct proc_dir_entry {
> unsigned int low_ino;
> - unsigned short namelen;
> + unsigned int namelen;
> const char *name;
> mode_t mode;
> nlink_t nlink;
mode_t is unsigned short on many platforms.
Layout order in this struct should probably be:
const char *name;
unsigned short namelen;
mode_t mode;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] proc: make proc entry's len "unsigned int"
2010-11-26 21:10 [PATCH] proc: make proc entry's len "unsigned int" Alexey Dobriyan
2010-11-26 23:58 ` Joe Perches
@ 2011-01-05 0:51 ` Andrew Morton
2011-01-05 8:45 ` Alexey Dobriyan
1 sibling, 1 reply; 4+ messages in thread
From: Andrew Morton @ 2011-01-05 0:51 UTC (permalink / raw)
To: Alexey Dobriyan; +Cc: linux-kernel
On Fri, 26 Nov 2010 23:10:33 +0200
Alexey Dobriyan <adobriyan@gmail.com> wrote:
> Space is not really conserved, because of natural alignment for the next field.
>
> ...
>
> --- a/fs/proc/generic.c
> +++ b/fs/proc/generic.c
> @@ -28,7 +28,7 @@
>
> DEFINE_SPINLOCK(proc_subdir_lock);
>
> -static int proc_match(int len, const char *name, struct proc_dir_entry *de)
> +static int proc_match(unsigned int len, const char *name, struct proc_dir_entry *de)
> {
> if (de->namelen != len)
> return 0;
> @@ -303,7 +303,7 @@ static int __xlate_proc_name(const char *name, struct proc_dir_entry **ret,
> {
> const char *cp = name, *next;
> struct proc_dir_entry *de;
> - int len;
> + unsigned int len;
>
> de = *ret;
> if (!de)
> @@ -605,7 +605,7 @@ static struct proc_dir_entry *__proc_create(struct proc_dir_entry **parent,
> {
> struct proc_dir_entry *ent = NULL;
> const char *fn = name;
> - int len;
> + unsigned int len;
>
> /* make sure name is valid */
> if (!name || !strlen(name)) goto out;
> @@ -794,7 +794,7 @@ void remove_proc_entry(const char *name, struct proc_dir_entry *parent)
> struct proc_dir_entry **p;
> struct proc_dir_entry *de = NULL;
> const char *fn = name;
> - int len;
> + unsigned int len;
>
> spin_lock(&proc_subdir_lock);
> if (__xlate_proc_name(name, &parent, &fn) != 0) {
> --- a/include/linux/proc_fs.h
> +++ b/include/linux/proc_fs.h
> @@ -50,7 +50,7 @@ typedef int (write_proc_t)(struct file *file, const char __user *buffer,
>
> struct proc_dir_entry {
> unsigned int low_ino;
> - unsigned short namelen;
> + unsigned int namelen;
> const char *name;
> mode_t mode;
> nlink_t nlink;
Well, if we _can_ save some space here then the returns would be
appreciable.
akpm:/home/akpm# find /proc | wc -l
95543
(wtf?)
akpm:/home/akpm# find /proc/[0-9]* | wc -l
94212
(oh.)
Do all of those things have a proc_dir_entry? IIRC we changed things
so they're somewhat allocate-on-demand.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] proc: make proc entry's len "unsigned int"
2011-01-05 0:51 ` Andrew Morton
@ 2011-01-05 8:45 ` Alexey Dobriyan
0 siblings, 0 replies; 4+ messages in thread
From: Alexey Dobriyan @ 2011-01-05 8:45 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel
On Tue, Jan 04, 2011 at 04:51:59PM -0800, Andrew Morton wrote:
> On Fri, 26 Nov 2010 23:10:33 +0200
> Alexey Dobriyan <adobriyan@gmail.com> wrote:
> > struct proc_dir_entry {
> > unsigned int low_ino;
> > - unsigned short namelen;
> > + unsigned int namelen;
> > const char *name;
> > mode_t mode;
> > nlink_t nlink;
>
> Well, if we _can_ save some space here then the returns would be
> appreciable.
>
> akpm:/home/akpm# find /proc | wc -l
> 95543
>
> (wtf?)
>
> akpm:/home/akpm# find /proc/[0-9]* | wc -l
> 94212
>
> (oh.)
Different number of processes?
> Do all of those things have a proc_dir_entry?
No!
> IIRC we changed things so they're somewhat allocate-on-demand.
Only /proc/$PID and /proc/sys/* are on-demand allocated.
The rest has struct proc_dir_entry associated.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-01-05 8:45 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-26 21:10 [PATCH] proc: make proc entry's len "unsigned int" Alexey Dobriyan
2010-11-26 23:58 ` Joe Perches
2011-01-05 0:51 ` Andrew Morton
2011-01-05 8:45 ` Alexey Dobriyan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox