Messages in this thread | | | Date | Thu, 7 Sep 2006 10:22:14 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH 3/5] proc: Remove the hard coded inode numbers. |
| |
On Wed, 06 Sep 2006 10:27:13 -0600 ebiederm@xmission.com (Eric W. Biederman) wrote:
> +static int proc_fill_cache(struct file *filp, void *dirent, filldir_t filldir, > + char *name, int len, > + instantiate_t instantiate, struct task_struct *task, void *ptr) > +{ > + struct dentry *child, *dir = filp->f_dentry; > + struct inode *inode; > + struct qstr qname; > + ino_t ino = 0; > + unsigned type = DT_UNKNOWN; > + > + qname.name = name; > + qname.len = len; > + qname.hash = full_name_hash(name, len); > + > + child = d_lookup(dir, &qname); > + if (!child) { > + struct dentry *new; > + new = d_alloc(dir, &qname); > + if (new) { > + child = instantiate(dir->d_inode, new, task, ptr); > + if (child) > + dput(new); > + else > + child = new; > + } > + } > + if (!child || IS_ERR(child) || !child->d_inode) > + goto end_instantiate; > + inode = child->d_inode; > + if (inode) { > + ino = inode->i_ino; > + type = inode->i_mode >> 12; > + } > + dput(child); > +end_instantiate: > + if (!ino) > + ino = find_inode_number(dir, &qname); > + if (!ino) > + ino = 1; > + return filldir(dirent, name, len, filp->f_pos, ino, type); > +}
The error handling in here looks rather absent. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |