2012/9/5 Cong Wang <xiyou.wangc...@gmail.com>: >>> Why the !memcmp() case is related with ENOMEM ?? >> >> >> We are presetting 'error' here. The following proc_get_inode() will try >> to get an inode, either from inode cache or allocate a new one (and fill >> it). >> >> If we get a NULL inode, that means allocation failed. That's how >> ENOMEM involved. > > > Then the following patch is probably better than yours: > > > diff --git a/fs/proc/generic.c b/fs/proc/generic.c > index b3647fe..6b22913 100644 > --- a/fs/proc/generic.c > +++ b/fs/proc/generic.c > @@ -427,12 +427,16 @@ struct dentry *proc_lookup_de(struct proc_dir_entry > *de, struct inode *dir, > > if (!memcmp(dentry->d_name.name, de->name, de->namelen)) { > pde_get(de); > spin_unlock(&proc_subdir_lock); > - error = -EINVAL; > inode = proc_get_inode(dir->i_sb, de); > + if (!inode) { > + error = -ENOMEM; > + goto out_put; > + } > goto out_unlock; > } > } > spin_unlock(&proc_subdir_lock); > + > out_unlock: > > if (inode) { > @@ -440,6 +444,8 @@ out_unlock: > d_add(dentry, inode); > return NULL; > } > +out_put: > + > if (de) > pde_put(de); > return ERR_PTR(error); > >
Change so many lines to save a assignment to 'error' ... That's a stye issue. I prefer a simple change, though your change seems OK to me. Thanks -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/