lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 1 Oct 2021 10:31:30 +0800
From:   kernel test robot <lkp@...el.com>
To:     Ralf Baechle <ralf@...ux-mips.org>, netdev@...r.kernel.org
Cc:     llvm@...ts.linux.dev, kbuild-all@...ts.01.org,
        Jakub Kicinski <kuba@...nel.org>,
        Christoph Hellwig <hch@....de>,
        Thomas Osterried <thomas@...erried.de>,
        linux-hams@...r.kernel.org
Subject: Re: [PATCH] ax25: Fix use of copy_from_sockptr() in ax25_setsockopt()

Hi Ralf,

I love your patch! Perhaps something to improve:

[auto build test WARNING on net/master]
[also build test WARNING on net-next/master horms-ipvs/master linus/master v5.15-rc3 next-20210922]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Ralf-Baechle/ax25-Fix-use-of-copy_from_sockptr-in-ax25_setsockopt/20211001-002911
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git 35306eb23814444bd4021f8a1c3047d3cb0c8b2b
config: x86_64-randconfig-r012-20210930 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 962e503cc8bc411f7523cc393acae8aae425b1c4)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/a84e2204c4c268dd4475a95ed472285982ae6c57
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Ralf-Baechle/ax25-Fix-use-of-copy_from_sockptr-in-ax25_setsockopt/20211001-002911
        git checkout a84e2204c4c268dd4475a95ed472285982ae6c57
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>

All warnings (new ones prefixed by >>):

>> net/ax25/af_ax25.c:569:22: warning: result of comparison of constant 18446744073709551 with expression of type 'unsigned int' is always false [-Wtautological-constant-out-of-range-compare]
                   if (opt < 1 || opt > ULONG_MAX / HZ) {
                                  ~~~ ^ ~~~~~~~~~~~~~~
   net/ax25/af_ax25.c:578:22: warning: result of comparison of constant 18446744073709551 with expression of type 'unsigned int' is always false [-Wtautological-constant-out-of-range-compare]
                   if (opt < 1 || opt > ULONG_MAX / HZ) {
                                  ~~~ ^ ~~~~~~~~~~~~~~
   net/ax25/af_ax25.c:594:22: warning: result of comparison of constant 18446744073709551 with expression of type 'unsigned int' is always false [-Wtautological-constant-out-of-range-compare]
                   if (opt < 1 || opt > ULONG_MAX / HZ) {
                                  ~~~ ^ ~~~~~~~~~~~~~~
   net/ax25/af_ax25.c:602:11: warning: result of comparison of constant 307445734561825 with expression of type 'unsigned int' is always false [-Wtautological-constant-out-of-range-compare]
                   if (opt > ULONG_MAX / (60 * HZ)) {
                       ~~~ ^ ~~~~~~~~~~~~~~~~~~~~~
   4 warnings generated.


vim +569 net/ax25/af_ax25.c

^1da177e4c3f41 Linus Torvalds    2005-04-16  524  
^1da177e4c3f41 Linus Torvalds    2005-04-16  525  /*
^1da177e4c3f41 Linus Torvalds    2005-04-16  526   *	Handling for system calls applied via the various interfaces to an
^1da177e4c3f41 Linus Torvalds    2005-04-16  527   *	AX25 socket object
^1da177e4c3f41 Linus Torvalds    2005-04-16  528   */
^1da177e4c3f41 Linus Torvalds    2005-04-16  529  
^1da177e4c3f41 Linus Torvalds    2005-04-16  530  static int ax25_setsockopt(struct socket *sock, int level, int optname,
a7b75c5a8c4144 Christoph Hellwig 2020-07-23  531  		sockptr_t optval, unsigned int optlen)
^1da177e4c3f41 Linus Torvalds    2005-04-16  532  {
^1da177e4c3f41 Linus Torvalds    2005-04-16  533  	struct sock *sk = sock->sk;
^1da177e4c3f41 Linus Torvalds    2005-04-16  534  	ax25_cb *ax25;
^1da177e4c3f41 Linus Torvalds    2005-04-16  535  	struct net_device *dev;
^1da177e4c3f41 Linus Torvalds    2005-04-16  536  	char devname[IFNAMSIZ];
a84e2204c4c268 Ralf Baechle      2021-09-30  537  	unsigned int opt;
ba1cffe0257bcd Xi Wang           2011-12-27  538  	int res = 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  539  
^1da177e4c3f41 Linus Torvalds    2005-04-16  540  	if (level != SOL_AX25)
^1da177e4c3f41 Linus Torvalds    2005-04-16  541  		return -ENOPROTOOPT;
^1da177e4c3f41 Linus Torvalds    2005-04-16  542  
ba1cffe0257bcd Xi Wang           2011-12-27  543  	if (optlen < sizeof(unsigned int))
^1da177e4c3f41 Linus Torvalds    2005-04-16  544  		return -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  545  
a7b75c5a8c4144 Christoph Hellwig 2020-07-23  546  	if (copy_from_sockptr(&opt, optval, sizeof(unsigned int)))
^1da177e4c3f41 Linus Torvalds    2005-04-16  547  		return -EFAULT;
^1da177e4c3f41 Linus Torvalds    2005-04-16  548  
^1da177e4c3f41 Linus Torvalds    2005-04-16  549  	lock_sock(sk);
3200392b88dd25 David Miller      2015-06-25  550  	ax25 = sk_to_ax25(sk);
^1da177e4c3f41 Linus Torvalds    2005-04-16  551  
^1da177e4c3f41 Linus Torvalds    2005-04-16  552  	switch (optname) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  553  	case AX25_WINDOW:
^1da177e4c3f41 Linus Torvalds    2005-04-16  554  		if (ax25->modulus == AX25_MODULUS) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  555  			if (opt < 1 || opt > 7) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  556  				res = -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  557  				break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  558  			}
^1da177e4c3f41 Linus Torvalds    2005-04-16  559  		} else {
^1da177e4c3f41 Linus Torvalds    2005-04-16  560  			if (opt < 1 || opt > 63) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  561  				res = -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  562  				break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  563  			}
^1da177e4c3f41 Linus Torvalds    2005-04-16  564  		}
^1da177e4c3f41 Linus Torvalds    2005-04-16  565  		ax25->window = opt;
^1da177e4c3f41 Linus Torvalds    2005-04-16  566  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  567  
^1da177e4c3f41 Linus Torvalds    2005-04-16  568  	case AX25_T1:
be639ac6901a08 Ralf Baechle      2011-11-24 @569  		if (opt < 1 || opt > ULONG_MAX / HZ) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  570  			res = -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  571  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  572  		}
f16f3026db6fa6 Eric Dumazet      2008-01-13  573  		ax25->rtt = (opt * HZ) >> 1;
^1da177e4c3f41 Linus Torvalds    2005-04-16  574  		ax25->t1  = opt * HZ;
^1da177e4c3f41 Linus Torvalds    2005-04-16  575  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  576  
^1da177e4c3f41 Linus Torvalds    2005-04-16  577  	case AX25_T2:
be639ac6901a08 Ralf Baechle      2011-11-24  578  		if (opt < 1 || opt > ULONG_MAX / HZ) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  579  			res = -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  580  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  581  		}
^1da177e4c3f41 Linus Torvalds    2005-04-16  582  		ax25->t2 = opt * HZ;
^1da177e4c3f41 Linus Torvalds    2005-04-16  583  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  584  
^1da177e4c3f41 Linus Torvalds    2005-04-16  585  	case AX25_N2:
^1da177e4c3f41 Linus Torvalds    2005-04-16  586  		if (opt < 1 || opt > 31) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  587  			res = -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  588  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  589  		}
^1da177e4c3f41 Linus Torvalds    2005-04-16  590  		ax25->n2 = opt;
^1da177e4c3f41 Linus Torvalds    2005-04-16  591  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  592  
^1da177e4c3f41 Linus Torvalds    2005-04-16  593  	case AX25_T3:
be639ac6901a08 Ralf Baechle      2011-11-24  594  		if (opt < 1 || opt > ULONG_MAX / HZ) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  595  			res = -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  596  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  597  		}
^1da177e4c3f41 Linus Torvalds    2005-04-16  598  		ax25->t3 = opt * HZ;
^1da177e4c3f41 Linus Torvalds    2005-04-16  599  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  600  
^1da177e4c3f41 Linus Torvalds    2005-04-16  601  	case AX25_IDLE:
ba1cffe0257bcd Xi Wang           2011-12-27  602  		if (opt > ULONG_MAX / (60 * HZ)) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  603  			res = -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  604  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  605  		}
^1da177e4c3f41 Linus Torvalds    2005-04-16  606  		ax25->idle = opt * 60 * HZ;
^1da177e4c3f41 Linus Torvalds    2005-04-16  607  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  608  
^1da177e4c3f41 Linus Torvalds    2005-04-16  609  	case AX25_BACKOFF:
ba1cffe0257bcd Xi Wang           2011-12-27  610  		if (opt > 2) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  611  			res = -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  612  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  613  		}
^1da177e4c3f41 Linus Torvalds    2005-04-16  614  		ax25->backoff = opt;
^1da177e4c3f41 Linus Torvalds    2005-04-16  615  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  616  
^1da177e4c3f41 Linus Torvalds    2005-04-16  617  	case AX25_EXTSEQ:
^1da177e4c3f41 Linus Torvalds    2005-04-16  618  		ax25->modulus = opt ? AX25_EMODULUS : AX25_MODULUS;
^1da177e4c3f41 Linus Torvalds    2005-04-16  619  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  620  
^1da177e4c3f41 Linus Torvalds    2005-04-16  621  	case AX25_PIDINCL:
^1da177e4c3f41 Linus Torvalds    2005-04-16  622  		ax25->pidincl = opt ? 1 : 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  623  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  624  
^1da177e4c3f41 Linus Torvalds    2005-04-16  625  	case AX25_IAMDIGI:
^1da177e4c3f41 Linus Torvalds    2005-04-16  626  		ax25->iamdigi = opt ? 1 : 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  627  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  628  
^1da177e4c3f41 Linus Torvalds    2005-04-16  629  	case AX25_PACLEN:
^1da177e4c3f41 Linus Torvalds    2005-04-16  630  		if (opt < 16 || opt > 65535) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  631  			res = -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  632  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  633  		}
^1da177e4c3f41 Linus Torvalds    2005-04-16  634  		ax25->paclen = opt;
^1da177e4c3f41 Linus Torvalds    2005-04-16  635  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  636  
^1da177e4c3f41 Linus Torvalds    2005-04-16  637  	case SO_BINDTODEVICE:
687775cec056b3 Eric Dumazet      2020-05-19  638  		if (optlen > IFNAMSIZ - 1)
687775cec056b3 Eric Dumazet      2020-05-19  639  			optlen = IFNAMSIZ - 1;
687775cec056b3 Eric Dumazet      2020-05-19  640  
687775cec056b3 Eric Dumazet      2020-05-19  641  		memset(devname, 0, sizeof(devname));
2f72291d3d0e44 Ralf Baechle      2009-09-28  642  
a7b75c5a8c4144 Christoph Hellwig 2020-07-23  643  		if (copy_from_sockptr(devname, optval, optlen)) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  644  			res = -EFAULT;
^1da177e4c3f41 Linus Torvalds    2005-04-16  645  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  646  		}
^1da177e4c3f41 Linus Torvalds    2005-04-16  647  
^1da177e4c3f41 Linus Torvalds    2005-04-16  648  		if (sk->sk_type == SOCK_SEQPACKET &&
^1da177e4c3f41 Linus Torvalds    2005-04-16  649  		   (sock->state != SS_UNCONNECTED ||
^1da177e4c3f41 Linus Torvalds    2005-04-16  650  		    sk->sk_state == TCP_LISTEN)) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  651  			res = -EADDRNOTAVAIL;
2f72291d3d0e44 Ralf Baechle      2009-09-28  652  			break;
2f72291d3d0e44 Ralf Baechle      2009-09-28  653  		}
2f72291d3d0e44 Ralf Baechle      2009-09-28  654  
c433570458e49b Cong Wang         2018-12-29  655  		rtnl_lock();
c433570458e49b Cong Wang         2018-12-29  656  		dev = __dev_get_by_name(&init_net, devname);
2f72291d3d0e44 Ralf Baechle      2009-09-28  657  		if (!dev) {
c433570458e49b Cong Wang         2018-12-29  658  			rtnl_unlock();
2f72291d3d0e44 Ralf Baechle      2009-09-28  659  			res = -ENODEV;
^1da177e4c3f41 Linus Torvalds    2005-04-16  660  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  661  		}
^1da177e4c3f41 Linus Torvalds    2005-04-16  662  
^1da177e4c3f41 Linus Torvalds    2005-04-16  663  		ax25->ax25_dev = ax25_dev_ax25dev(dev);
c433570458e49b Cong Wang         2018-12-29  664  		if (!ax25->ax25_dev) {
c433570458e49b Cong Wang         2018-12-29  665  			rtnl_unlock();
c433570458e49b Cong Wang         2018-12-29  666  			res = -ENODEV;
c433570458e49b Cong Wang         2018-12-29  667  			break;
c433570458e49b Cong Wang         2018-12-29  668  		}
^1da177e4c3f41 Linus Torvalds    2005-04-16  669  		ax25_fillin_cb(ax25, ax25->ax25_dev);
c433570458e49b Cong Wang         2018-12-29  670  		rtnl_unlock();
^1da177e4c3f41 Linus Torvalds    2005-04-16  671  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  672  
^1da177e4c3f41 Linus Torvalds    2005-04-16  673  	default:
^1da177e4c3f41 Linus Torvalds    2005-04-16  674  		res = -ENOPROTOOPT;
^1da177e4c3f41 Linus Torvalds    2005-04-16  675  	}
^1da177e4c3f41 Linus Torvalds    2005-04-16  676  	release_sock(sk);
^1da177e4c3f41 Linus Torvalds    2005-04-16  677  
^1da177e4c3f41 Linus Torvalds    2005-04-16  678  	return res;
^1da177e4c3f41 Linus Torvalds    2005-04-16  679  }
^1da177e4c3f41 Linus Torvalds    2005-04-16  680  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (34429 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ