lkml.org 
[lkml]   [2006]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 06/20] sysfs: sysfs_remove_dir() needs to invalidate the dentry
    -stable review patch.  If anyone has any objections, please let us know.

    ------------------
    When calling sysfs_remove_dir() don't allow any further sysfs functions
    to work for this kobject anymore. This fixes a nasty USB cdc-acm oops
    on disconnect.

    Many thanks to Bob Copeland and Paul Fulghum for taking the time to
    track this down.

    Cc: Bob Copeland <email@bobcopeland.com>
    Cc: Paul Fulghum <paulkf@microgate.com>
    Cc: Maneesh Soni <maneesh@in.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---

    fs/sysfs/dir.c | 1 +
    fs/sysfs/inode.c | 6 +++++-
    2 files changed, 6 insertions(+), 1 deletion(-)

    641e6f30a095f3752ed84fd9d279382f5d3ef4c1
    --- linux-2.6.16.orig/fs/sysfs/dir.c
    +++ linux-2.6.16/fs/sysfs/dir.c
    @@ -302,6 +302,7 @@ void sysfs_remove_dir(struct kobject * k
    * Drop reference from dget() on entrance.
    */
    dput(dentry);
    + kobj->dentry = NULL;
    }

    int sysfs_rename_dir(struct kobject * kobj, const char *new_name)
    --- linux-2.6.16.orig/fs/sysfs/inode.c
    +++ linux-2.6.16/fs/sysfs/inode.c
    @@ -227,12 +227,16 @@ void sysfs_drop_dentry(struct sysfs_dire
    void sysfs_hash_and_remove(struct dentry * dir, const char * name)
    {
    struct sysfs_dirent * sd;
    - struct sysfs_dirent * parent_sd = dir->d_fsdata;
    + struct sysfs_dirent * parent_sd;
    +
    + if (!dir)
    + return;

    if (dir->d_inode == NULL)
    /* no inode means this hasn't been made visible yet */
    return;

    + parent_sd = dir->d_fsdata;
    mutex_lock(&dir->d_inode->i_mutex);
    list_for_each_entry(sd, &parent_sd->s_children, s_sibling) {
    if (!sd->s_element)
    --
    -
    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/

    \
     
     \ /
      Last update: 2006-03-25 05:31    [W:0.023 / U:1.648 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site