debugfs_create_dir and debugfs_create_file may return -ENODEV when debugfs is not configured, so the return value should be checked against ERROR_VALUE as well, otherwise the later dereference of the dentry pointer would crash the kernel. Signed-off-by: Chengyu Song <csong84@xxxxxxxxxx> --- fs/nfsd/fault_inject.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/fs/nfsd/fault_inject.c b/fs/nfsd/fault_inject.c index c16bf5a..621d065 100644 --- a/fs/nfsd/fault_inject.c +++ b/fs/nfsd/fault_inject.c @@ -132,19 +132,23 @@ int nfsd_fault_inject_init(void) unsigned int i; struct nfsd_fault_inject_op *op; umode_t mode = S_IFREG | S_IRUSR | S_IWUSR; + struct dentry *dent; - debug_dir = debugfs_create_dir("nfsd", NULL); - if (!debug_dir) + dent = debugfs_create_dir("nfsd", NULL); + if (IS_ERR_OR_NULL(dent)) goto fail; + debug_dir = dent; for (i = 0; i < NUM_INJECT_OPS; i++) { op = &inject_ops[i]; - if (!debugfs_create_file(op->file, mode, debug_dir, op, &fops_nfsd)) + dent = debugfs_create_file(op->file, mode, debug_dir, op, &fops_nfsd); + if (IS_ERR_OR_NULL(dent)) goto fail; + } return 0; fail: nfsd_fault_inject_cleanup(); - return -ENOMEM; + return dent ? PTR_ERR(dent) : -ENOMEM; } -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html