======================================================
WARNING: possible circular locking dependency detected
4.17.0-rc2+ #23 Not tainted
------------------------------------------------------
syz-executor2/6708 is trying to acquire lock:
        (ptrval) (&mm->mmap_sem){++++}, at: __might_fault+0xfb/0x1e0 mm/memory.c:4554

but task is already holding lock:
        (ptrval) (sk_lock-AF_INET6){+.+.}, at: lock_sock include/net/sock.h:1469 [inline]
        (ptrval) (sk_lock-AF_INET6){+.+.}, at: do_ipv6_setsockopt.isra.9+0x2e8/0x4680 net/ipv6/ipv6_sockglue.c:167

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (sk_lock-AF_INET6){+.+.}:
       lock_sock_nested+0xd0/0x120 net/core/sock.c:2844
       lock_sock include/net/sock.h:1469 [inline]
       tcp_mmap+0x1c7/0x14f0 net/ipv4/tcp.c:1759
       sock_mmap+0x8e/0xc0 net/socket.c:1144
       call_mmap include/linux/fs.h:1789 [inline]
       mmap_region+0xd13/0x1820 mm/mmap.c:1723
       do_mmap+0xc79/0x11d0 mm/mmap.c:1494
       do_mmap_pgoff include/linux/mm.h:2237 [inline]
       vm_mmap_pgoff+0x1fb/0x2a0 mm/util.c:357
       ksys_mmap_pgoff+0x4c9/0x640 mm/mmap.c:1544
       __do_sys_mmap arch/x86/kernel/sys_x86_64.c:100 [inline]
       __se_sys_mmap arch/x86/kernel/sys_x86_64.c:91 [inline]
       __x64_sys_mmap+0xe9/0x1b0 arch/x86/kernel/sys_x86_64.c:91
       do_syscall_64+0x1b1/0x800 arch/x86/entry/common.c:287
       entry_SYSCALL_64_after_hwframe+0x49/0xbe

-> #0 (&mm->mmap_sem){++++}:
       lock_acquire+0x1dc/0x520 kernel/locking/lockdep.c:3920
       __might_fault+0x155/0x1e0 mm/memory.c:4555
       _copy_from_user+0x30/0x150 lib/usercopy.c:10
       copy_from_user include/linux/uaccess.h:147 [inline]
       do_ipv6_setsockopt.isra.9+0x2fca/0x4680 net/ipv6/ipv6_sockglue.c:518
       ipv6_setsockopt+0xbd/0x170 net/ipv6/ipv6_sockglue.c:922
       tcp_setsockopt+0x93/0xe0 net/ipv4/tcp.c:3029
       sock_common_setsockopt+0x9a/0xe0 net/core/sock.c:3042
       __sys_setsockopt+0x1bd/0x390 net/socket.c:1903
       __do_sys_setsockopt net/socket.c:1914 [inline]
       __se_sys_setsockopt net/socket.c:1911 [inline]
       __x64_sys_setsockopt+0xbe/0x150 net/socket.c:1911
       do_syscall_64+0x1b1/0x800 arch/x86/entry/common.c:287
       entry_SYSCALL_64_after_hwframe+0x49/0xbe

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(sk_lock-AF_INET6);
                               lock(&mm->mmap_sem);
                               lock(sk_lock-AF_INET6);
  lock(&mm->mmap_sem);

 *** DEADLOCK ***

1 lock held by syz-executor2/6708:
 #0:         (ptrval) (sk_lock-AF_INET6){+.+.}, at: lock_sock include/net/sock.h:1469 [inline]
 #0:         (ptrval) (sk_lock-AF_INET6){+.+.}, at: do_ipv6_setsockopt.isra.9+0x2e8/0x4680 net/ipv6/ipv6_sockglue.c:167

stack backtrace:
CPU: 1 PID: 6708 Comm: syz-executor2 Not tainted 4.17.0-rc2+ #23
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
 __dump_stack lib/dump_stack.c:77 [inline]
 dump_stack+0x1b9/0x294 lib/dump_stack.c:113
 print_circular_bug.isra.36.cold.54+0x1bd/0x27d kernel/locking/lockdep.c:1223
 check_prev_add kernel/locking/lockdep.c:1863 [inline]
 check_prevs_add kernel/locking/lockdep.c:1976 [inline]
 validate_chain kernel/locking/lockdep.c:2417 [inline]
 __lock_acquire+0x343e/0x5140 kernel/locking/lockdep.c:3431
 lock_acquire+0x1dc/0x520 kernel/locking/lockdep.c:3920
 __might_fault+0x155/0x1e0 mm/memory.c:4555
 _copy_from_user+0x30/0x150 lib/usercopy.c:10
 copy_from_user include/linux/uaccess.h:147 [inline]
 do_ipv6_setsockopt.isra.9+0x2fca/0x4680 net/ipv6/ipv6_sockglue.c:518
 ipv6_setsockopt+0xbd/0x170 net/ipv6/ipv6_sockglue.c:922
 tcp_setsockopt+0x93/0xe0 net/ipv4/tcp.c:3029
 sock_common_setsockopt+0x9a/0xe0 net/core/sock.c:3042
 __sys_setsockopt+0x1bd/0x390 net/socket.c:1903
 __do_sys_setsockopt net/socket.c:1914 [inline]
 __se_sys_setsockopt net/socket.c:1911 [inline]
 __x64_sys_setsockopt+0xbe/0x150 net/socket.c:1911
 do_syscall_64+0x1b1/0x800 arch/x86/entry/common.c:287
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x455979
RSP: 002b:00007f61d62e5c68 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
RAX: ffffffffffffffda RBX: 00007f61d62e66d4 RCX: 0000000000455979
RDX: 0000000000000006 RSI: 0000000000000029 RDI: 0000000000000013
RBP: 000000000072bea0 R08: 0000000000000001 R09: 0000000000000000
R10: 0000000020356ff9 R11: 0000000000000246 R12: 00000000ffffffff
R13: 000000000000055e R14: 00000000006fb170 R15: 0000000000000000
TCP: request_sock_TCPv6: Possible SYN flooding on port 20002. Sending cookies.  Check SNMP counters.
IPVS: ftp: loaded support on port[0] = 21
IPVS: ip_vs_svc_hash(): request for already hashed, called from do_ip_vs_set_ctl+0x1b19/0x1d00 net/netfilter/ipvs/ip_vs_ctl.c:2453
IPVS: ip_vs_svc_hash(): request for already hashed, called from do_ip_vs_set_ctl+0x1b19/0x1d00 net/netfilter/ipvs/ip_vs_ctl.c:2453
IPVS: set_ctl: invalid protocol: 65534 255.255.255.255:20003 ovf
IPVS: set_ctl: invalid protocol: 65534 255.255.255.255:20003 ovf
IPVS: set_ctl: invalid protocol: 59 255.255.255.255:20002 wlc
netlink: 8 bytes leftover after parsing attributes in process `syz-executor3'.
IPVS: ftp: loaded support on port[0] = 21
TCP: request_sock_TCP: Possible SYN flooding on port 20000. Sending cookies.  Check SNMP counters.
IPVS: set_ctl: invalid protocol: 59 255.255.255.255:20002 wlc
IPVS: You probably need to specify IP address on multicast interface.
syz-executor1 (7391) used greatest stack depth: 15864 bytes left
IPVS: Error connecting to the multicast addr
dccp_close: ABORT with 65423 bytes unread
TCP: request_sock_TCPv6: Possible SYN flooding on port 20002. Sending cookies.  Check SNMP counters.
syz-executor0 (7493) used greatest stack depth: 14952 bytes left
syz-executor3 uses obsolete (PF_INET,SOCK_PACKET)
sctp: [Deprecated]: syz-executor0 (pid 7622) Use of int in max_burst socket option deprecated.
Use struct sctp_assoc_value instead
IPv4: Oversized IP packet from 127.0.0.1
sctp: [Deprecated]: syz-executor4 (pid 7752) Use of int in max_burst socket option.
Use struct sctp_assoc_value instead
IPVS: sync thread started: state = MASTER, mcast_ifn = erspan0, syncid = 3, id = 0
sctp: [Deprecated]: syz-executor4 (pid 7752) Use of int in max_burst socket option.
Use struct sctp_assoc_value instead
kernel msg: ebtables bug: please report to author: EBT_ENTRY_OR_ENTRIES shouldn't be set in distinguisher
kernel msg: ebtables bug: please report to author: EBT_ENTRY_OR_ENTRIES shouldn't be set in distinguisher
gretap0: Invalid MTU 3 requested, hw min 68
IPVS: ftp: loaded support on port[0] = 21
gretap0: Invalid MTU 3 requested, hw min 68