Messages in this thread | | | Date | Wed, 5 Sep 2012 15:57:54 +0800 | Subject | Re: [PATCH 1/3] proc: return -ENOMEM when inode allocation failed | From | yan yan <> |
| |
2012/9/5 Cong Wang <xiyou.wangcong@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
| |