proc: make struct proc_dir_entry::namelen unsigned int
authorAlexey Dobriyan <adobriyan@gmail.com>
Wed, 23 Mar 2011 23:42:52 +0000 (16:42 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 24 Mar 2011 02:46:37 +0000 (19:46 -0700)
1. namelen is declared "unsigned short" which hints for "maybe space savings".
   Indeed in 2.4 struct proc_dir_entry looked like:

        struct proc_dir_entry {
                unsigned short low_ino;
                unsigned short namelen;

   Now, low_ino is "unsigned int", all savings were gone for a long time.
   "struct proc_dir_entry" is not that countless to worry about it's size,
   anyway.

2. converting from unsigned short to int/unsigned int can only create
   problems, we better play it safe.

Space is not really conserved, because of natural alignment for the next
field.  sizeof(struct proc_dir_entry) remains the same.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/proc/generic.c
include/linux/proc_fs.h

index 01e07f2a188fb0d58686d14b36e63e02b7dea08b..f1281339b6fadc27ab1237e2d0191f666b0ed5ce 100644 (file)
@@ -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)
@@ -602,7 +602,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;
@@ -786,7 +786,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) {
index 379eaed72d4b447d7e3b5098ab48e65d7bd959f9..838c1149251a1e8edff75dd2db6ef58092542386 100644 (file)
@@ -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;