• Francesco Ruggeri's avatar
    fs/proc: fix potential unregister_sysctl_table hang · 6bf61045
    Francesco Ruggeri authored
    The unregister_sysctl_table() function hangs if all references to its
    ctl_table_header structure are not dropped.
    
    This can happen sometimes because of a leak in proc_sys_lookup():
    proc_sys_lookup() gets a reference to the table via lookup_entry(), but
    it does not release it when a subsequent call to sysctl_follow_link()
    fails.
    
    This patch fixes this leak by making sure the reference is always
    dropped on return.
    
    See also commit 076c3eed ("sysctl: Rewrite proc_sys_lookup
    introducing find_entry and lookup_entry") which reorganized this code in
    3.4.
    
    Tested in Linux 3.4.4.
    Signed-off-by: default avatarFrancesco Ruggeri <fruggeri@aristanetworks.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6bf61045
proc_sysctl.c 39 KB