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] [day] [month] [year] [list]
Message-ID: <202305241812.MJMEMRiJ-lkp@intel.com>
Date:   Wed, 24 May 2023 18:59:51 +0800
From:   kernel test robot <lkp@...el.com>
To:     Srinivas Pandruvada <srinivas.pandruvada@...ux.intel.com>,
        rafael@...nel.org, rui.zhang@...el.com, daniel.lezcano@...aro.org
Cc:     llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
        linux-pm@...r.kernel.org, linux-kernel@...r.kernel.org,
        Srinivas Pandruvada <srinivas.pandruvada@...ux.intel.com>
Subject: Re: [RESEND][PATCH] thermal: intel: int340x_thermal: New IOCTLs for
 thermal

Hi Srinivas,

kernel test robot noticed the following build warnings:

[auto build test WARNING on rafael-pm/thermal]
[also build test WARNING on linus/master v6.4-rc3 next-20230524]
[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#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Srinivas-Pandruvada/thermal-intel-int340x_thermal-New-IOCTLs-for-thermal/20230524-062514
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git thermal
patch link:    https://lore.kernel.org/r/20230523221339.2377625-1-srinivas.pandruvada%40linux.intel.com
patch subject: [RESEND][PATCH] thermal: intel: int340x_thermal: New IOCTLs for thermal
config: x86_64-randconfig-x075
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
        mkdir -p ~/bin
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/d9cdbb3a7b52afac5dcbf0aaa2d1593964554c7c
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Srinivas-Pandruvada/thermal-intel-int340x_thermal-New-IOCTLs-for-thermal/20230524-062514
        git checkout d9cdbb3a7b52afac5dcbf0aaa2d1593964554c7c
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=x86_64 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/thermal/intel/int340x_thermal/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202305241812.MJMEMRiJ-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/thermal/intel/int340x_thermal/acpi_thermal_rel.c:214:5: warning: no previous prototype for function 'acpi_parse_psvt' [-Wmissing-prototypes]
   int acpi_parse_psvt(acpi_handle handle, int *psvt_count, struct psvt **psvtp)
       ^
   drivers/thermal/intel/int340x_thermal/acpi_thermal_rel.c:214:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int acpi_parse_psvt(acpi_handle handle, int *psvt_count, struct psvt **psvtp)
   ^
   static 
>> drivers/thermal/intel/int340x_thermal/acpi_thermal_rel.c:240:7: warning: variable 'revision' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
                   if (prev->type == ACPI_TYPE_INTEGER)
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/thermal/intel/int340x_thermal/acpi_thermal_rel.c:248:6: note: uninitialized use occurs here
           if (revision != 2) {
               ^~~~~~~~
   drivers/thermal/intel/int340x_thermal/acpi_thermal_rel.c:240:3: note: remove the 'if' if its condition is always true
                   if (prev->type == ACPI_TYPE_INTEGER)
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/thermal/intel/int340x_thermal/acpi_thermal_rel.c:217:34: note: initialize the variable 'revision' to silence this warning
           int nr_bad_entries = 0, revision;
                                           ^
                                            = 0
   2 warnings generated.

Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for CRYPTO_CRC32C_INTEL
   Depends on [n]: CRYPTO [=y] && !KMSAN [=y] && X86 [=y]
   Selected by [m]:
   - ISCSI_TARGET [=m] && TARGET_CORE [=y] && INET [=y] && X86 [=y]


vim +/acpi_parse_psvt +214 drivers/thermal/intel/int340x_thermal/acpi_thermal_rel.c

   205	
   206	/*
   207	 * acpi_parse_psvt - Passive Table (PSVT) for passive cooling
   208	 *
   209	 * @handle: ACPI handle of the device which contains PSVT
   210	 * @psvt_count: the number of valid entries resulted from parsing PSVT
   211	 * @psvtp: pointer to array of psvt entries
   212	 *
   213	 */
 > 214	int acpi_parse_psvt(acpi_handle handle, int *psvt_count, struct psvt **psvtp)
   215	{
   216		struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
   217		int nr_bad_entries = 0, revision;
   218		union acpi_object *p;
   219		acpi_status status;
   220		int i, result = 0;
   221		struct psvt *psvts;
   222	
   223		if (!acpi_has_method(handle, "PSVT"))
   224			return -ENODEV;
   225	
   226		status = acpi_evaluate_object(handle, "PSVT", NULL, &buffer);
   227		if (ACPI_FAILURE(status))
   228			return -ENODEV;
   229	
   230		p = buffer.pointer;
   231		if (!p || (p->type != ACPI_TYPE_PACKAGE)) {
   232			result = -EFAULT;
   233			goto end;
   234		}
   235	
   236		/* first package is the revision number */
   237		if (p->package.count > 0) {
   238			union acpi_object *prev = &(p->package.elements[0]);
   239	
 > 240			if (prev->type == ACPI_TYPE_INTEGER)
   241				revision = (int)prev->integer.value;
   242		} else {
   243			result = -EFAULT;
   244			goto end;
   245		}
   246	
   247		/* Support only version 2 */
   248		if (revision != 2) {
   249			result = -EFAULT;
   250			goto end;
   251		}
   252	
   253		*psvt_count = p->package.count - 1;
   254		if (!*psvt_count) {
   255			result = -EFAULT;
   256			goto end;
   257		}
   258	
   259		psvts = kcalloc(*psvt_count, sizeof(*psvts), GFP_KERNEL);
   260		if (!psvts) {
   261			result = -ENOMEM;
   262			goto end;
   263		}
   264	
   265		/* Start index is 1 because the first package is the revision number */
   266		for (i = 1; i < p->package.count; i++) {
   267			struct acpi_buffer psvt_int_format = { sizeof("RRNNNNNNNNNN"), "RRNNNNNNNNNN" };
   268			struct acpi_buffer psvt_str_format = { sizeof("RRNNNNNSNNNN"), "RRNNNNNSNNNN" };
   269			union acpi_object *package = &(p->package.elements[i]);
   270			struct psvt *psvt = &psvts[i - 1 - nr_bad_entries];
   271			struct acpi_buffer *psvt_format = &psvt_int_format;
   272			struct acpi_buffer element = { 0, NULL };
   273			union acpi_object *knob;
   274			struct acpi_device *res;
   275			struct psvt *psvt_ptr;
   276	
   277			element.length = ACPI_ALLOCATE_BUFFER;
   278			element.pointer = NULL;
   279	
   280			if (package->package.count >= ACPI_NR_PSVT_ELEMENTS) {
   281				knob = &(package->package.elements[ACPI_PSVT_CONTROL_KNOB]);
   282			} else {
   283				nr_bad_entries++;
   284				pr_info("PSVT package %d is invalid, ignored\n", i);
   285				continue;
   286			}
   287	
   288			if (knob->type == ACPI_TYPE_STRING) {
   289				psvt_format = &psvt_str_format;
   290				if (knob->string.length > ACPI_LIMIT_STR_MAX_LEN) {
   291					pr_info("PSVT package %d limit string len exceeds max\n", i);
   292					knob->string.length = ACPI_LIMIT_STR_MAX_LEN;
   293				}
   294			}
   295	
   296			status = acpi_extract_package(&(p->package.elements[i]), psvt_format, &element);
   297			if (ACPI_FAILURE(status)) {
   298				nr_bad_entries++;
   299				pr_info("PSVT package %d is invalid, ignored\n", i);
   300				continue;
   301			}
   302	
   303			psvt_ptr = (struct psvt *)element.pointer;
   304	
   305			memcpy(psvt, psvt_ptr, sizeof(*psvt_ptr));
   306	
   307			/* The limit element can be string or U64 */
   308			psvt->control_knob_type = (u64)knob->type;
   309	
   310			if (knob->type == ACPI_TYPE_STRING) {
   311				memset(&psvt->limit, 0, sizeof(u64));
   312				strncpy(psvt->limit.string, psvt_ptr->limit.str_ptr, knob->string.length);
   313			} else {
   314				psvt->limit.integer = psvt_ptr->limit.integer;
   315			}
   316	
   317			kfree(element.pointer);
   318	
   319			res = acpi_fetch_acpi_dev(psvt->source);
   320			if (!res) {
   321				nr_bad_entries++;
   322				pr_info("Failed to get source ACPI device\n");
   323				continue;
   324			}
   325	
   326			res = acpi_fetch_acpi_dev(psvt->target);
   327			if (!res) {
   328				nr_bad_entries++;
   329				pr_info("Failed to get target ACPI device\n");
   330				continue;
   331			}
   332		}
   333	
   334		/* don't count bad entries */
   335		*psvt_count -= nr_bad_entries;
   336	
   337		if (!*psvt_count) {
   338			result = -EFAULT;
   339			kfree(psvts);
   340			goto end;
   341		}
   342	
   343		*psvtp = psvts;
   344	
   345		return 0;
   346	
   347	end:
   348		kfree(buffer.pointer);
   349		return result;
   350	}
   351	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

View attachment "config" of type "text/plain" (161112 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ