lkml.org 
[lkml]   [2014]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC PATCH 1/3] procfs: check uniq proc_dir_entry subdir name
    Quoting Chen Hanxiao (chenhanxiao@cn.fujitsu.com):
    > Check whether a proc dir has a subdir
    > with a specific name.
    > Will be used in a later patch.
    >
    > Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
    > ---
    > fs/proc/generic.c | 15 +++++++++++++++
    > include/linux/proc_fs.h | 3 +++
    > 2 files changed, 18 insertions(+)
    >
    > diff --git a/fs/proc/generic.c b/fs/proc/generic.c
    > index b7f268e..4d576c2 100644
    > --- a/fs/proc/generic.c
    > +++ b/fs/proc/generic.c
    > @@ -173,6 +173,21 @@ static const struct inode_operations proc_link_inode_operations = {
    > .follow_link = proc_follow_link,
    > };
    >
    > +/* check whether dir has @name member */
    > +struct proc_dir_entry *proc_uniq_dir(struct proc_dir_entry *de, char *name)
    > +{
    > + spin_lock(&proc_subdir_lock);
    > + for (de = de->subdir; de ; de = de->next) {
    > + if (!strcmp(de->name, name)) {

    Should you pde_get(de) here?

    > + spin_unlock(&proc_subdir_lock);
    > + return de;
    > + }
    > + }
    > + spin_unlock(&proc_subdir_lock);
    > + return NULL;
    > +}
    > +EXPORT_SYMBOL(proc_uniq_dir);
    > +
    > /*
    > * Don't create negative dentries here, return -ENOENT by hand
    > * instead.
    > diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
    > index 9d117f6..38e87aa 100644
    > --- a/include/linux/proc_fs.h
    > +++ b/include/linux/proc_fs.h
    > @@ -41,6 +41,7 @@ extern void *proc_get_parent_data(const struct inode *);
    > extern void proc_remove(struct proc_dir_entry *);
    > extern void remove_proc_entry(const char *, struct proc_dir_entry *);
    > extern int remove_proc_subtree(const char *, struct proc_dir_entry *);
    > +extern struct proc_dir_entry *proc_uniq_dir(struct proc_dir_entry *, char *);
    >
    > #else /* CONFIG_PROC_FS */
    >
    > @@ -71,6 +72,8 @@ static inline void *proc_get_parent_data(const struct inode *inode) { BUG(); ret
    > static inline void proc_remove(struct proc_dir_entry *de) {}
    > #define remove_proc_entry(name, parent) do {} while (0)
    > static inline int remove_proc_subtree(const char *name, struct proc_dir_entry *parent) { return 0; }
    > +static inline struct proc_dir_entry *proc_uniq_dir(struct proc_dir_entry *,
    > + char *) {return 0; }
    >
    > #endif /* CONFIG_PROC_FS */
    >
    > --
    > 1.9.0
    >
    > _______________________________________________
    > Containers mailing list
    > Containers@lists.linux-foundation.org
    > https://lists.linuxfoundation.org/mailman/listinfo/containers


    \
     
     \ /
      Last update: 2014-09-10 02:01    [W:2.608 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site