• Wei Yongjun's avatar
    net: Fix module refcount leak in kernel_accept() · 1b08534e
    Wei Yongjun authored
    The kernel_accept() does not hold the module refcount of newsock->ops->owner,
    so we need __module_get(newsock->ops->owner) code after call kernel_accept()
    by hand.
    In sunrpc, the module refcount is missing to hold. So this cause kernel panic.
    
    Used following script to reproduct:
    
    while [ 1 ];
    do
        mount -t nfs4 192.168.0.19:/ /mnt
        touch /mnt/file
        umount /mnt
        lsmod | grep ipv6
    done
    
    This patch fixed the problem by add __module_get(newsock->ops->owner) to
    kernel_accept(). So we do not need to used __module_get(newsock->ops->owner)
    in every place when used kernel_accept().
    Signed-off-by: default avatarWei Yongjun <yjwei@cn.fujitsu.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1b08534e
socket.c 57.1 KB