I don't see why this should print warnings at all instead of properly unrolling allocations and returning an appropriate error. It's actually leaking resources currently. to: Alexander Viro <viro@xxxxxxxxxxxxxxxxxx> to: linux-kernel@xxxxxxxxxxxxxxx cc: linux-fsdevel@xxxxxxxxxxxxxxx Signed-off-by: Debabrata Banerjee <dbanerje@xxxxxxxxxx> --- fs/proc/generic.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/proc/generic.c b/fs/proc/generic.c index 317b726..89b20cc 100644 --- a/fs/proc/generic.c +++ b/fs/proc/generic.c @@ -304,6 +304,7 @@ static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp dp->proc_iops = &proc_file_inode_operations; } else { WARN_ON(1); + proc_free_inum(dp->low_ino); return -EINVAL; } @@ -311,9 +312,13 @@ static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp for (tmp = dir->subdir; tmp; tmp = tmp->next) if (strcmp(tmp->name, dp->name) == 0) { - WARN(1, "proc_dir_entry '%s/%s' already registered\n", - dir->name, dp->name); - break; + spin_unlock(&proc_subdir_lock); + + if (S_ISDIR(dp->mode)) + dir->nlink--; + + proc_free_inum(dp->low_ino); + return -EEXIST; } dp->next = dir->subdir; -- 2.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html