tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/mm head: f2089aa0cd8e52564240a93ea1e4bb643c0ed34c commit: 5744534bdae403270f86d934a6c5878da6a5a64f [5/16] x86/uaccess: Provide untagged_addr() and remove tags before address check config: x86_64-randconfig-s023-20221114 compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.4-39-gce1a6720-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?id=5744534bdae403270f86d934a6c5878da6a5a64f git remote add tip https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git git fetch --no-tags tip x86/mm git checkout 5744534bdae403270f86d934a6c5878da6a5a64f # save the config file mkdir build_dir && cp config build_dir/.config make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash net/appletalk/ net/atm/ net/can/ net/dccp/ net/ieee802154/ net/ipv4/ net/ipv6/ net/kcm/ net/mctp/ net/netfilter/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) net/appletalk/ddp.c:100:33: sparse: sparse: restricted __be16 degrades to integer net/appletalk/ddp.c:113:33: sparse: sparse: restricted __be16 degrades to integer net/appletalk/ddp.c:409:47: sparse: sparse: restricted __be16 degrades to integer >> net/appletalk/ddp.c:1810:22: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/appletalk/ddp.c:1810:22: sparse: expected int [noderef] __user *__ptr_clean net/appletalk/ddp.c:1810:22: sparse: got int * net/appletalk/ddp.c:1823:22: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/appletalk/ddp.c:1823:22: sparse: expected int [noderef] __user *__ptr_clean net/appletalk/ddp.c:1823:22: sparse: got int * -- >> net/atm/svc.c:509:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/atm/svc.c:509:13: sparse: expected int [noderef] __user *__ptr_clean net/atm/svc.c:509:13: sparse: got int * -- >> net/atm/ioctl.c:70:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/atm/ioctl.c:70:25: sparse: expected int [noderef] __user *__ptr_clean net/atm/ioctl.c:70:25: sparse: got int * net/atm/ioctl.c:82:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/atm/ioctl.c:82:25: sparse: expected int [noderef] __user *__ptr_clean net/atm/ioctl.c:82:25: sparse: got int * >> net/atm/ioctl.c:125:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned short [noderef] __user *__ptr_clean @@ got unsigned short * @@ net/atm/ioctl.c:125:25: sparse: expected unsigned short [noderef] __user *__ptr_clean net/atm/ioctl.c:125:25: sparse: got unsigned short * >> net/atm/ioctl.c:180:29: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __user *[noderef] __user *__ptr_clean @@ got void [noderef] __user ** @@ net/atm/ioctl.c:180:29: sparse: expected void [noderef] __user *[noderef] __user *__ptr_clean net/atm/ioctl.c:180:29: sparse: got void [noderef] __user ** net/atm/ioctl.c:203:29: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __user *[noderef] __user *__ptr_clean @@ got void [noderef] __user ** @@ net/atm/ioctl.c:203:29: sparse: expected void [noderef] __user *[noderef] __user *__ptr_clean net/atm/ioctl.c:203:29: sparse: got void [noderef] __user ** net/atm/ioctl.c:205:29: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/atm/ioctl.c:205:29: sparse: expected int [noderef] __user *__ptr_clean net/atm/ioctl.c:205:29: sparse: got int * -- >> net/atm/common.c:795:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/atm/common.c:795:13: sparse: expected int [noderef] __user *__ptr_clean net/atm/common.c:795:13: sparse: got int * >> net/atm/common.c:808:24: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned long [noderef] __user *__ptr_clean @@ got unsigned long * @@ net/atm/common.c:808:24: sparse: expected unsigned long [noderef] __user *__ptr_clean net/atm/common.c:808:24: sparse: got unsigned long * -- >> net/atm/resources.c:201:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/atm/resources.c:201:13: sparse: expected int [noderef] __user *__ptr_clean net/atm/resources.c:201:13: sparse: got int * net/atm/resources.c:221:18: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/atm/resources.c:221:18: sparse: expected int [noderef] __user *__ptr_clean net/atm/resources.c:221:18: sparse: got int * net/atm/resources.c:233:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/atm/resources.c:233:13: sparse: expected int [noderef] __user *__ptr_clean net/atm/resources.c:233:13: sparse: got int * net/atm/resources.c:352:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/atm/resources.c:352:25: sparse: expected int [noderef] __user *__ptr_clean net/atm/resources.c:352:25: sparse: got int * net/atm/resources.c:395:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/atm/resources.c:395:25: sparse: expected int [noderef] __user *__ptr_clean net/atm/resources.c:395:25: sparse: got int * -- >> net/atm/br2684.c:733:23: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned short [noderef] __user *__ptr_clean @@ got unsigned short * @@ net/atm/br2684.c:733:23: sparse: expected unsigned short [noderef] __user *__ptr_clean net/atm/br2684.c:733:23: sparse: got unsigned short * -- >> net/atm/mpoa_proc.c:223:21: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected char const [noderef] __user *__ptr_clean @@ got char const * @@ net/atm/mpoa_proc.c:223:21: sparse: expected char const [noderef] __user *__ptr_clean net/atm/mpoa_proc.c:223:21: sparse: got char const * -- >> net/can/raw.c:710:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/can/raw.c:710:13: sparse: expected int [noderef] __user *__ptr_clean net/can/raw.c:710:13: sparse: got int * net/can/raw.c:725:37: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/can/raw.c:725:37: sparse: expected int [noderef] __user *__ptr_clean net/can/raw.c:725:37: sparse: got int * net/can/raw.c:739:31: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/can/raw.c:739:31: sparse: expected int [noderef] __user *__ptr_clean net/can/raw.c:739:31: sparse: got int * net/can/raw.c:782:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/can/raw.c:782:13: sparse: expected int [noderef] __user *__ptr_clean net/can/raw.c:782:13: sparse: got int * -- >> net/can/isotp.c:1456:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/can/isotp.c:1456:13: sparse: expected int [noderef] __user *__ptr_clean net/can/isotp.c:1456:13: sparse: got int * net/can/isotp.c:1491:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/can/isotp.c:1491:13: sparse: expected int [noderef] __user *__ptr_clean net/can/isotp.c:1491:13: sparse: got int * -- >> net/dccp/proto.c:373:22: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/dccp/proto.c:373:22: sparse: expected int [noderef] __user *__ptr_clean net/dccp/proto.c:373:22: sparse: got int * net/dccp/proto.c:388:22: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/dccp/proto.c:388:22: sparse: expected int [noderef] __user *__ptr_clean net/dccp/proto.c:388:22: sparse: got int * net/dccp/proto.c:524:52: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected restricted __be32 const [usertype] service @@ got int [addressable] val @@ net/dccp/proto.c:524:52: sparse: expected restricted __be32 const [usertype] service net/dccp/proto.c:524:52: sparse: got int [addressable] val net/dccp/proto.c:594:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/dccp/proto.c:594:13: sparse: expected int [noderef] __user *__ptr_clean net/dccp/proto.c:594:13: sparse: got int * >> net/dccp/proto.c:595:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected restricted __be32 [noderef] __user *__ptr_clean @@ got restricted __be32 * @@ net/dccp/proto.c:595:13: sparse: expected restricted __be32 [noderef] __user *__ptr_clean net/dccp/proto.c:595:13: sparse: got restricted __be32 * net/dccp/proto.c:609:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/dccp/proto.c:609:13: sparse: expected int [noderef] __user *__ptr_clean net/dccp/proto.c:609:13: sparse: got int * net/dccp/proto.c:665:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/dccp/proto.c:665:13: sparse: expected int [noderef] __user *__ptr_clean net/dccp/proto.c:665:13: sparse: got int * net/dccp/proto.c:707:57: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected restricted __be32 [usertype] param @@ got int cmsg_type @@ net/dccp/proto.c:707:57: sparse: expected restricted __be32 [usertype] param net/dccp/proto.c:707:57: sparse: got int cmsg_type -- net/dccp/ccids/ccid3.c:474:25: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be32 [usertype] opt_val @@ got unsigned int [usertype] @@ net/dccp/ccids/ccid3.c:474:25: sparse: expected restricted __be32 [usertype] opt_val net/dccp/ccids/ccid3.c:474:25: sparse: got unsigned int [usertype] net/dccp/ccids/ccid3.c:478:39: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] tx_x_recv @@ got restricted __be32 [usertype] opt_val @@ net/dccp/ccids/ccid3.c:478:39: sparse: expected unsigned long long [usertype] tx_x_recv net/dccp/ccids/ccid3.c:478:39: sparse: got restricted __be32 [usertype] opt_val net/dccp/ccids/ccid3.c:485:64: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] loss_event_rate @@ got restricted __be32 [usertype] opt_val @@ net/dccp/ccids/ccid3.c:485:64: sparse: expected unsigned int [usertype] loss_event_rate net/dccp/ccids/ccid3.c:485:64: sparse: got restricted __be32 [usertype] opt_val >> net/dccp/ccids/ccid3.c:546:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/dccp/ccids/ccid3.c:546:13: sparse: expected int [noderef] __user *__ptr_clean net/dccp/ccids/ccid3.c:546:13: sparse: got int * net/dccp/ccids/ccid3.c:836:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/dccp/ccids/ccid3.c:836:13: sparse: expected int [noderef] __user *__ptr_clean net/dccp/ccids/ccid3.c:836:13: sparse: got int * -- >> net/dccp/ccid.c:69:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/dccp/ccid.c:69:13: sparse: expected int [noderef] __user *__ptr_clean net/dccp/ccid.c:69:13: sparse: got int * -- >> net/ieee802154/socket.c:541:24: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/ieee802154/socket.c:541:24: sparse: expected int [noderef] __user *__ptr_clean net/ieee802154/socket.c:541:24: sparse: got int * net/ieee802154/socket.c:560:24: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/ieee802154/socket.c:560:24: sparse: expected int [noderef] __user *__ptr_clean net/ieee802154/socket.c:560:24: sparse: got int * net/ieee802154/socket.c:846:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/ieee802154/socket.c:846:13: sparse: expected int [noderef] __user *__ptr_clean net/ieee802154/socket.c:846:13: sparse: got int * net/ieee802154/socket.c:876:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/ieee802154/socket.c:876:13: sparse: expected int [noderef] __user *__ptr_clean net/ieee802154/socket.c:876:13: sparse: got int * -- >> net/ipv4/ip_sockglue.c:1793:21: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/ipv4/ip_sockglue.c:1793:21: sparse: expected int [noderef] __user *__ptr_clean net/ipv4/ip_sockglue.c:1793:21: sparse: got int * net/ipv4/ip_sockglue.c:1798:31: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/ipv4/ip_sockglue.c:1798:31: sparse: expected int [noderef] __user *__ptr_clean net/ipv4/ip_sockglue.c:1798:31: sparse: got int * -- >> net/ipv6/ipv6_sockglue.c:1510:21: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/ipv6/ipv6_sockglue.c:1510:21: sparse: expected int [noderef] __user *__ptr_clean net/ipv6/ipv6_sockglue.c:1510:21: sparse: got int * net/ipv6/ipv6_sockglue.c:1515:31: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/ipv6/ipv6_sockglue.c:1515:31: sparse: expected int [noderef] __user *__ptr_clean net/ipv6/ipv6_sockglue.c:1515:31: sparse: got int * -- >> net/can/j1939/socket.c:755:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/can/j1939/socket.c:755:13: sparse: expected int [noderef] __user *__ptr_clean net/can/j1939/socket.c:755:13: sparse: got int * net/can/j1939/socket.c:782:18: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/can/j1939/socket.c:782:18: sparse: expected int [noderef] __user *__ptr_clean net/can/j1939/socket.c:782:18: sparse: got int * -- >> net/kcm/kcmsock.c:1317:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/kcm/kcmsock.c:1317:13: sparse: expected int [noderef] __user *__ptr_clean net/kcm/kcmsock.c:1317:13: sparse: got int * net/kcm/kcmsock.c:1332:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/kcm/kcmsock.c:1332:13: sparse: expected int [noderef] __user *__ptr_clean net/kcm/kcmsock.c:1332:13: sparse: got int * -- >> net/mctp/af_mctp.c:338:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/mctp/af_mctp.c:338:13: sparse: expected int [noderef] __user *__ptr_clean net/mctp/af_mctp.c:338:13: sparse: got int * -- >> net/netfilter/x_tables.c:297:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned short [noderef] __user *__ptr_clean @@ got unsigned short * @@ net/netfilter/x_tables.c:297:13: sparse: expected unsigned short [noderef] __user *__ptr_clean net/netfilter/x_tables.c:297:13: sparse: got unsigned short * >> net/netfilter/x_tables.c:301:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [noderef] __user *__ptr_clean @@ got unsigned char * @@ net/netfilter/x_tables.c:301:13: sparse: expected unsigned char [noderef] __user *__ptr_clean net/netfilter/x_tables.c:301:13: sparse: got unsigned char * -- >> net/ipv4/bpfilter/sockopt.c:65:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected int [noderef] __user *__ptr_clean @@ got int * @@ net/ipv4/bpfilter/sockopt.c:65:13: sparse: expected int [noderef] __user *__ptr_clean net/ipv4/bpfilter/sockopt.c:65:13: sparse: got int * vim +1810 net/appletalk/ddp.c ^1da177e4c3f415 Linus Torvalds 2005-04-16 1792 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1793 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1794 /* ^1da177e4c3f415 Linus Torvalds 2005-04-16 1795 * AppleTalk ioctl calls. ^1da177e4c3f415 Linus Torvalds 2005-04-16 1796 */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1797 static int atalk_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1798 { b5e5fa5e093e42c Christoph Hellwig 2006-01-03 1799 int rc = -ENOIOCTLCMD; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1800 struct sock *sk = sock->sk; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1801 void __user *argp = (void __user *)arg; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1802 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1803 switch (cmd) { ^1da177e4c3f415 Linus Torvalds 2005-04-16 1804 /* Protocol layer */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1805 case TIOCOUTQ: { 31e6d363abcd0d0 Eric Dumazet 2009-06-17 1806 long amount = sk->sk_sndbuf - sk_wmem_alloc_get(sk); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1807 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1808 if (amount < 0) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1809 amount = 0; ^1da177e4c3f415 Linus Torvalds 2005-04-16 @1810 rc = put_user(amount, (int __user *)argp); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1811 break; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1812 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1813 case TIOCINQ: { ^1da177e4c3f415 Linus Torvalds 2005-04-16 1814 /* ^1da177e4c3f415 Linus Torvalds 2005-04-16 1815 * These two are safe on a single CPU system as only ^1da177e4c3f415 Linus Torvalds 2005-04-16 1816 * user tasks fiddle here ^1da177e4c3f415 Linus Torvalds 2005-04-16 1817 */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1818 struct sk_buff *skb = skb_peek(&sk->sk_receive_queue); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1819 long amount = 0; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1820 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1821 if (skb) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1822 amount = skb->len - sizeof(struct ddpehdr); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1823 rc = put_user(amount, (int __user *)argp); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1824 break; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1825 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1826 /* Routing */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1827 case SIOCADDRT: ^1da177e4c3f415 Linus Torvalds 2005-04-16 1828 case SIOCDELRT: ^1da177e4c3f415 Linus Torvalds 2005-04-16 1829 rc = -EPERM; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1830 if (capable(CAP_NET_ADMIN)) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1831 rc = atrtr_ioctl(cmd, argp); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1832 break; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1833 /* Interface */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1834 case SIOCGIFADDR: ^1da177e4c3f415 Linus Torvalds 2005-04-16 1835 case SIOCSIFADDR: ^1da177e4c3f415 Linus Torvalds 2005-04-16 1836 case SIOCGIFBRDADDR: ^1da177e4c3f415 Linus Torvalds 2005-04-16 1837 case SIOCATALKDIFADDR: ^1da177e4c3f415 Linus Torvalds 2005-04-16 1838 case SIOCDIFADDR: ^1da177e4c3f415 Linus Torvalds 2005-04-16 1839 case SIOCSARP: /* proxy AARP */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1840 case SIOCDARP: /* proxy AARP */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1841 rtnl_lock(); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1842 rc = atif_ioctl(cmd, argp); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1843 rtnl_unlock(); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1844 break; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1845 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1846 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1847 return rc; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1848 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1849 :::::: The code at line 1810 was first introduced by commit :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2 :::::: TO: Linus Torvalds :::::: CC: Linus Torvalds -- 0-DAY CI Kernel Test Service https://01.org/lkp