lkml.org 
[lkml]   [2016]   [Apr]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH -tip v3 3/3] locking/pvqspinlock: Robustify init_qspinlock_stat()
    locking/pvqspinlock: Robustify init_qspinlock_stat()

    Specifically around the debugfs file creation calls,
    I have no idea if they could ever possibly fail, but
    this is core code (debug aside) so lets at least
    check the return value and inform anything fishy.

    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    ---
    kernel/locking/qspinlock_stat.h | 22 ++++++++++++++--------
    1 file changed, 14 insertions(+), 8 deletions(-)

    diff --git a/kernel/locking/qspinlock_stat.h b/kernel/locking/qspinlock_stat.h
    index 72722334237a..22e025309845 100644
    --- a/kernel/locking/qspinlock_stat.h
    +++ b/kernel/locking/qspinlock_stat.h
    @@ -212,10 +212,8 @@ static int __init init_qspinlock_stat(void)
    struct dentry *d_qstat = debugfs_create_dir("qlockstat", NULL);
    int i;

    - if (!d_qstat) {
    - pr_warn("Could not create 'qlockstat' debugfs directory\n");
    - return 0;
    - }
    + if (!d_qstat)
    + goto out;

    /*
    * Create the debugfs files
    @@ -225,12 +223,20 @@ static int __init init_qspinlock_stat(void)
    * performance.
    */
    for (i = 0; i < qstat_num; i++)
    - debugfs_create_file(qstat_names[i], 0400, d_qstat,
    - (void *)(long)i, &fops_qstat);
    + if (!debugfs_create_file(qstat_names[i], 0400, d_qstat,
    + (void *)(long)i, &fops_qstat))
    + goto fail_undo;
    +
    + if (!debugfs_create_file(qstat_names[qstat_reset_cnts], 0200, d_qstat,
    + (void *)(long)qstat_reset_cnts, &fops_qstat))
    + goto fail_undo;

    - debugfs_create_file(qstat_names[qstat_reset_cnts], 0200, d_qstat,
    - (void *)(long)qstat_reset_cnts, &fops_qstat);
    return 0;
    +fail_undo:
    + debugfs_remove_recursive(d_qstat);
    +out:
    + pr_warn("Could not create 'qlockstat' debugfs entries\n");
    + return -ENOMEM;
    }
    fs_initcall(init_qspinlock_stat);

    --
    2.8.1
    \
     
     \ /
      Last update: 2016-04-20 07:01    [W:3.949 / U:0.688 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site