From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 46BD57FBAC for ; Sun, 24 Nov 2024 17:28:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.16 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732469327; cv=none; b=jovXbv4VZFDejwki0qrvHJag0WwqoooJGVv/EgMK78sOZCNmgARVhTLRMFMofoKsDpTeKA/zrbQMPt0nYIoqEaM7fEew4So+kk2vQe3+HJ1pNfU5Ck4rzKyiH8dA6zlxjnpNEJcmfqLh/tGpB1T+rJrGJuYLEJt8y9J1sThbFvU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732469327; c=relaxed/simple; bh=7DgtFnMTDAdt4WGrMjE4NVrMODopga2jRQCdzY4Cq50=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type: Content-Disposition; b=Wz9g9L4x1hMaWgbWFTjCSUQDLElqmWG6CKElX8EoGyCwSzSSPcgmEOy3wmr/qyUe5KaDSO0ZQ2TaEFxc/YMBIre/eaQJ2hhFVZ6VNpWzDC5vpNAuMEBLhez9e5vX1PyUhibs80IZYN9UIGPpHbyvGjwbIDFXZxTr7UZ9tVEdAO8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=X5MtEKqu; arc=none smtp.client-ip=198.175.65.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="X5MtEKqu" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1732469324; x=1764005324; h=date:from:to:cc:subject:message-id:mime-version; bh=7DgtFnMTDAdt4WGrMjE4NVrMODopga2jRQCdzY4Cq50=; b=X5MtEKqu2+Mxg6p/YgyigknuFp7OEYntJpDXV3w2cq4IVG/Slq6eqhw9 Dkrg4Zm9KAAkh06ifZVPoB9JHfSs6IHZKk6F1GXXU8SRf0fIhM3/rWKD8 S0GnO0q9Av34cmLu/mIW/BG9NJpGJOX+clbMdn2XkTcC0LC6jWvomEbM+ Rvp7aO1Flj33KiVOEv/108aB3zCGRbZWn7MIun2Y0A1FUgUyjx4ko0AWc oAId2/hOpX4BDO/iGZqDZJfV2ui6VMFEg5lDcLLicXWzfTAQmX6bo7TmJ OpGBa2mM9ZciuyS87wJhIMZokTbR15RYzHEwkWE+sf5zTU3Jmx5ECxUcT g==; X-CSE-ConnectionGUID: xsYPP1pYREuR6MyRRBR3Ug== X-CSE-MsgGUID: BXwrjMgoTLeys4APPcI/Ww== X-IronPort-AV: E=McAfee;i="6700,10204,11266"; a="32726009" X-IronPort-AV: E=Sophos;i="6.12,181,1728975600"; d="scan'208";a="32726009" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Nov 2024 09:28:44 -0800 X-CSE-ConnectionGUID: gGpFOTxSTY6DlpWg2akN2w== X-CSE-MsgGUID: StSKdMHbRlaj31vLs4erkw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,181,1728975600"; d="scan'208";a="91186465" Received: from lkp-server01.sh.intel.com (HELO 8122d2fc1967) ([10.239.97.150]) by orviesa006.jf.intel.com with ESMTP; 24 Nov 2024 09:28:43 -0800 Received: from kbuild by 8122d2fc1967 with local (Exim 4.96) (envelope-from ) id 1tFGPY-00057t-1e; Sun, 24 Nov 2024 17:28:40 +0000 Date: Mon, 25 Nov 2024 01:28:23 +0800 From: kernel test robot To: oe-kbuild@lists.linux.dev Cc: lkp@intel.com, Dan Carpenter Subject: net/ipv4/tcp_ao.c:689 tcp_ao_del_cmd() error: memcmp() '&key->addr' too small (4 vs 16) Message-ID: <202411250125.dSCU3dFH-lkp@intel.com> Precedence: bulk X-Mailing-List: oe-kbuild@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline BCC: lkp@intel.com CC: oe-kbuild-all@lists.linux.dev CC: linux-kernel@vger.kernel.org TO: Dmitry Safonov CC: Francesco Ruggeri CC: Salam Noureddine tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 9f16d5e6f220661f73b36a4be1b21575651d8833 commit: 4954f17ddefc51d218625dcdfaf422a253dad3fa net/tcp: Introduce TCP_AO setsockopt()s date: 1 year, 1 month ago :::::: branch date: 17 hours ago :::::: commit date: 1 year, 1 month ago config: x86_64-randconfig-161-20241114 (https://download.01.org/0day-ci/archive/20241125/202411250125.dSCU3dFH-lkp@intel.com/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot | Reported-by: Dan Carpenter | Closes: https://lore.kernel.org/r/202411250125.dSCU3dFH-lkp@intel.com/ smatch warnings: net/ipv4/tcp_ao.c:689 tcp_ao_del_cmd() error: memcmp() '&key->addr' too small (4 vs 16) vim +689 net/ipv4/tcp_ao.c 4954f17ddefc51 Dmitry Safonov 2023-10-23 599 4954f17ddefc51 Dmitry Safonov 2023-10-23 600 static int tcp_ao_del_cmd(struct sock *sk, unsigned short int family, 4954f17ddefc51 Dmitry Safonov 2023-10-23 601 sockptr_t optval, int optlen) 4954f17ddefc51 Dmitry Safonov 2023-10-23 602 { 4954f17ddefc51 Dmitry Safonov 2023-10-23 603 struct tcp_ao_key *key, *new_current = NULL, *new_rnext = NULL; 4954f17ddefc51 Dmitry Safonov 2023-10-23 604 struct tcp_ao_info *ao_info; 4954f17ddefc51 Dmitry Safonov 2023-10-23 605 union tcp_ao_addr *addr; 4954f17ddefc51 Dmitry Safonov 2023-10-23 606 struct tcp_ao_del cmd; 4954f17ddefc51 Dmitry Safonov 2023-10-23 607 int addr_len; 4954f17ddefc51 Dmitry Safonov 2023-10-23 608 __u8 prefix; 4954f17ddefc51 Dmitry Safonov 2023-10-23 609 u16 port; 4954f17ddefc51 Dmitry Safonov 2023-10-23 610 int err; 4954f17ddefc51 Dmitry Safonov 2023-10-23 611 4954f17ddefc51 Dmitry Safonov 2023-10-23 612 if (optlen < sizeof(cmd)) 4954f17ddefc51 Dmitry Safonov 2023-10-23 613 return -EINVAL; 4954f17ddefc51 Dmitry Safonov 2023-10-23 614 4954f17ddefc51 Dmitry Safonov 2023-10-23 615 err = copy_struct_from_sockptr(&cmd, sizeof(cmd), optval, optlen); 4954f17ddefc51 Dmitry Safonov 2023-10-23 616 if (err) 4954f17ddefc51 Dmitry Safonov 2023-10-23 617 return err; 4954f17ddefc51 Dmitry Safonov 2023-10-23 618 4954f17ddefc51 Dmitry Safonov 2023-10-23 619 if (cmd.reserved != 0 || cmd.reserved2 != 0) 4954f17ddefc51 Dmitry Safonov 2023-10-23 620 return -EINVAL; 4954f17ddefc51 Dmitry Safonov 2023-10-23 621 4954f17ddefc51 Dmitry Safonov 2023-10-23 622 if (cmd.set_current || cmd.set_rnext) { 4954f17ddefc51 Dmitry Safonov 2023-10-23 623 if (!tcp_ao_can_set_current_rnext(sk)) 4954f17ddefc51 Dmitry Safonov 2023-10-23 624 return -EINVAL; 4954f17ddefc51 Dmitry Safonov 2023-10-23 625 } 4954f17ddefc51 Dmitry Safonov 2023-10-23 626 4954f17ddefc51 Dmitry Safonov 2023-10-23 627 ao_info = setsockopt_ao_info(sk); 4954f17ddefc51 Dmitry Safonov 2023-10-23 628 if (IS_ERR(ao_info)) 4954f17ddefc51 Dmitry Safonov 2023-10-23 629 return PTR_ERR(ao_info); 4954f17ddefc51 Dmitry Safonov 2023-10-23 630 if (!ao_info) 4954f17ddefc51 Dmitry Safonov 2023-10-23 631 return -ENOENT; 4954f17ddefc51 Dmitry Safonov 2023-10-23 632 4954f17ddefc51 Dmitry Safonov 2023-10-23 633 /* For sockets in TCP_CLOSED it's possible set keys that aren't 4954f17ddefc51 Dmitry Safonov 2023-10-23 634 * matching the future peer (address/VRF/etc), 4954f17ddefc51 Dmitry Safonov 2023-10-23 635 * tcp_ao_connect_init() will choose a correct matching MKT 4954f17ddefc51 Dmitry Safonov 2023-10-23 636 * if there's any. 4954f17ddefc51 Dmitry Safonov 2023-10-23 637 */ 4954f17ddefc51 Dmitry Safonov 2023-10-23 638 if (cmd.set_current) { 4954f17ddefc51 Dmitry Safonov 2023-10-23 639 new_current = tcp_ao_established_key(ao_info, cmd.current_key, -1); 4954f17ddefc51 Dmitry Safonov 2023-10-23 640 if (!new_current) 4954f17ddefc51 Dmitry Safonov 2023-10-23 641 return -ENOENT; 4954f17ddefc51 Dmitry Safonov 2023-10-23 642 } 4954f17ddefc51 Dmitry Safonov 2023-10-23 643 if (cmd.set_rnext) { 4954f17ddefc51 Dmitry Safonov 2023-10-23 644 new_rnext = tcp_ao_established_key(ao_info, -1, cmd.rnext); 4954f17ddefc51 Dmitry Safonov 2023-10-23 645 if (!new_rnext) 4954f17ddefc51 Dmitry Safonov 2023-10-23 646 return -ENOENT; 4954f17ddefc51 Dmitry Safonov 2023-10-23 647 } 4954f17ddefc51 Dmitry Safonov 2023-10-23 648 4954f17ddefc51 Dmitry Safonov 2023-10-23 649 if (family == AF_INET) { 4954f17ddefc51 Dmitry Safonov 2023-10-23 650 struct sockaddr_in *sin = (struct sockaddr_in *)&cmd.addr; 4954f17ddefc51 Dmitry Safonov 2023-10-23 651 4954f17ddefc51 Dmitry Safonov 2023-10-23 652 addr = (union tcp_ao_addr *)&sin->sin_addr; 4954f17ddefc51 Dmitry Safonov 2023-10-23 653 addr_len = sizeof(struct in_addr); 4954f17ddefc51 Dmitry Safonov 2023-10-23 654 port = ntohs(sin->sin_port); 4954f17ddefc51 Dmitry Safonov 2023-10-23 655 } else { 4954f17ddefc51 Dmitry Safonov 2023-10-23 656 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&cmd.addr; 4954f17ddefc51 Dmitry Safonov 2023-10-23 657 struct in6_addr *addr6 = &sin6->sin6_addr; 4954f17ddefc51 Dmitry Safonov 2023-10-23 658 4954f17ddefc51 Dmitry Safonov 2023-10-23 659 if (ipv6_addr_v4mapped(addr6)) { 4954f17ddefc51 Dmitry Safonov 2023-10-23 660 addr = (union tcp_ao_addr *)&addr6->s6_addr32[3]; 4954f17ddefc51 Dmitry Safonov 2023-10-23 661 addr_len = sizeof(struct in_addr); 4954f17ddefc51 Dmitry Safonov 2023-10-23 662 family = AF_INET; 4954f17ddefc51 Dmitry Safonov 2023-10-23 663 } else { 4954f17ddefc51 Dmitry Safonov 2023-10-23 664 addr = (union tcp_ao_addr *)addr6; 4954f17ddefc51 Dmitry Safonov 2023-10-23 665 addr_len = sizeof(struct in6_addr); 4954f17ddefc51 Dmitry Safonov 2023-10-23 666 } 4954f17ddefc51 Dmitry Safonov 2023-10-23 667 port = ntohs(sin6->sin6_port); 4954f17ddefc51 Dmitry Safonov 2023-10-23 668 } 4954f17ddefc51 Dmitry Safonov 2023-10-23 669 prefix = cmd.prefix; 4954f17ddefc51 Dmitry Safonov 2023-10-23 670 4954f17ddefc51 Dmitry Safonov 2023-10-23 671 /* Currently matching is not performed on port (or port ranges) */ 4954f17ddefc51 Dmitry Safonov 2023-10-23 672 if (port != 0) 4954f17ddefc51 Dmitry Safonov 2023-10-23 673 return -EINVAL; 4954f17ddefc51 Dmitry Safonov 2023-10-23 674 4954f17ddefc51 Dmitry Safonov 2023-10-23 675 /* We could choose random present key here for current/rnext 4954f17ddefc51 Dmitry Safonov 2023-10-23 676 * but that's less predictable. Let's be strict and don't 4954f17ddefc51 Dmitry Safonov 2023-10-23 677 * allow removing a key that's in use. RFC5925 doesn't 4954f17ddefc51 Dmitry Safonov 2023-10-23 678 * specify how-to coordinate key removal, but says: 4954f17ddefc51 Dmitry Safonov 2023-10-23 679 * "It is presumed that an MKT affecting a particular 4954f17ddefc51 Dmitry Safonov 2023-10-23 680 * connection cannot be destroyed during an active connection" 4954f17ddefc51 Dmitry Safonov 2023-10-23 681 */ 4954f17ddefc51 Dmitry Safonov 2023-10-23 682 hlist_for_each_entry_rcu(key, &ao_info->head, node) { 4954f17ddefc51 Dmitry Safonov 2023-10-23 683 if (cmd.sndid != key->sndid || 4954f17ddefc51 Dmitry Safonov 2023-10-23 684 cmd.rcvid != key->rcvid) 4954f17ddefc51 Dmitry Safonov 2023-10-23 685 continue; 4954f17ddefc51 Dmitry Safonov 2023-10-23 686 4954f17ddefc51 Dmitry Safonov 2023-10-23 687 if (family != key->family || 4954f17ddefc51 Dmitry Safonov 2023-10-23 688 prefix != key->prefixlen || 4954f17ddefc51 Dmitry Safonov 2023-10-23 @689 memcmp(addr, &key->addr, addr_len)) 4954f17ddefc51 Dmitry Safonov 2023-10-23 690 continue; 4954f17ddefc51 Dmitry Safonov 2023-10-23 691 4954f17ddefc51 Dmitry Safonov 2023-10-23 692 if (key == new_current || key == new_rnext) 4954f17ddefc51 Dmitry Safonov 2023-10-23 693 continue; 4954f17ddefc51 Dmitry Safonov 2023-10-23 694 4954f17ddefc51 Dmitry Safonov 2023-10-23 695 return tcp_ao_delete_key(sk, ao_info, key, 4954f17ddefc51 Dmitry Safonov 2023-10-23 696 new_current, new_rnext); 4954f17ddefc51 Dmitry Safonov 2023-10-23 697 } 4954f17ddefc51 Dmitry Safonov 2023-10-23 698 return -ENOENT; 4954f17ddefc51 Dmitry Safonov 2023-10-23 699 } 4954f17ddefc51 Dmitry Safonov 2023-10-23 700 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki