• Maxim Giryaev's avatar
    [PATCH] Lost sockfd_put() in routing_ioctl() · 98debffa
    Maxim Giryaev authored
    
    
    This patch adds lost sockfd_put() in 32bit compat rounting_ioctl() on
    64bit platforms, bug found by Vasiliy Averin <vvs@sw.ru>.
    
    I believe this is a security issues, since user can fget() file as many
    times as he wants to. So file refcounter can be overlapped and first
    fput() will free resources though there will be still structures
    pointing to the file, mnt, dentry etc.
    Also fput() sets f_dentry and f_vfsmnt to NULL,
    so other file users will OOPS.
    
    The oops can be done under files_lock and others, so this can be an
    exploitable DoS on SMP. Didn't checked it on practice actually.
    Signed-Off-By: default avatarKirill Korotaev <dev@sw.ru>
    Signed-Off-By: default avatarMaxim Giryaev <gem@sw.ru>
    Signed-off-by: default avatarChris Wright <chrisw@osdl.org>
    98debffa
compat_ioctl.c 85 KB