Re: [PATCH] sysfs & dput.

From: Patrick Mochel (mochel_at_osdl.org)
Date: 09/11/03

  • Next message: Pau Aliagas: "IRQs and APIC conflicts with 2.6.0-test6"
    Date:	Thu, 11 Sep 2003 09:36:10 -0700 (PDT)
    To: Martin Schwidefsky <schwidefsky@de.ibm.com>
    
    

    > there is another, small bug in sysfs. In sysfs_create_bin_file
    > dentry gets assigned the error value of the call to sysfs_create
    > if the call failed. The subsequent call to dput will crash. The
    > solution is to remove the assignment of the error to dentry.

    Thanks for the catch; Andrew Morton also posted a patch yesterday.
    However, your patch drops the error value, and his adds another variable.
    The patch below should be equivalent (and fixes the same problem for
    directories, too).

    Please test it, if you get a chance.

    > blue skies,

    Heh, not today. :)

    Thanks,

            Pat

    ===== fs/sysfs/dir.c 1.11 vs edited =====
    --- 1.11/fs/sysfs/dir.c Fri Aug 29 14:17:37 2003
    +++ edited/fs/sysfs/dir.c Thu Sep 11 09:32:12 2003
    @@ -32,12 +32,12 @@
                     int error = sysfs_create(dentry,
                                              S_IFDIR| S_IRWXU | S_IRUGO | S_IXUGO,
                                              init_dir);
    + dput(dentry);
                     if (!error) {
                             dentry->d_fsdata = k;
                             p->d_inode->i_nlink++;
                     } else
                             dentry = ERR_PTR(error);
    - dput(dentry);
             }
             up(&p->d_inode->i_sem);
             return dentry;
    ===== fs/sysfs/file.c 1.11 vs edited =====
    --- 1.11/fs/sysfs/file.c Fri Aug 29 09:40:51 2003
    +++ edited/fs/sysfs/file.c Thu Sep 11 09:32:19 2003
    @@ -353,12 +353,14 @@
             down(&dir->d_inode->i_sem);
             dentry = sysfs_get_dentry(dir,attr->name);
             if (!IS_ERR(dentry)) {
    - error = sysfs_create(dentry,(attr->mode & S_IALLUGO) | S_IFREG,init_file);
    + error = sysfs_create(dentry,
    + (attr->mode & S_IALLUGO) | S_IFREG,
    + init_file);
    + dput(dentry);
                     if (!error)
                             dentry->d_fsdata = (void *)attr;
                     else
                             dentry = ERR_PTR(error);
    - dput(dentry);
             } else
                     error = PTR_ERR(dentry);
             up(&dir->d_inode->i_sem);

    -
    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/


  • Next message: Pau Aliagas: "IRQs and APIC conflicts with 2.6.0-test6"

    Relevant Pages

    • Re: What protection does sysfs_readdir have with SMP/Preemption?
      ... and after linking the new dentry to it). ... > ref count to 1. ... You might want this patch instead. ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: [PATCH] Re: Major XFS problems...
      ... > patch is included in mainline - it is the old patch from Neil Brown ... -struct dentry * d_find_alias(struct inode *inode) ... 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/ - ...
      (Linux-Kernel)
    • Re: [PATCH] ide-disk.c rev 1.13 killed CONFIG_IDEDISK_STROKE
      ... Some comments for later - the patch can be applied as it is: ... The assignment ... I don't think the presence or disabling of HPA has any effect ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: [PATCH] sysfs & dput.
      ... The subsequent call to dput will crash. ... >> solution is to remove the assignment of the error to dentry. ... > However, your patch drops the error value, and his adds another variable. ... My patch fixes sysfs_create_bin_file which returns error and not the dentry, ...
      (Linux-Kernel)
    • [PATCH] sysfs & dput.
      ... The subsequent call to dput will crash. ... solution is to remove the assignment of the error to dentry. ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)