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]
Message-ID: <c82b5c4-72e-c1ad-dce9-e5adf5d4a9b@linux.intel.com>
Date:   Thu, 14 Dec 2023 12:12:50 +0200 (EET)
From:   Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>
To:     Reinette Chatre <reinette.chatre@...el.com>
cc:     linux-kselftest@...r.kernel.org, Shuah Khan <shuah@...nel.org>,
        Shaopeng Tan <tan.shaopeng@...fujitsu.com>,
        Maciej Wieczór-Retman 
        <maciej.wieczor-retman@...el.com>,
        Fenghua Yu <fenghua.yu@...el.com>,
        LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v3 01/29] selftests/resctrl: Convert perror() to
 ksft_perror() or ksft_print_msg()

On Wed, 13 Dec 2023, Reinette Chatre wrote:

> Hi Ilpo,
> 
> On 12/11/2023 4:17 AM, Ilpo Järvinen wrote:
> > The resctrl selftest code contains a number of perror() calls. Some of
> > them come with hash character and some don't. The kselftest framework
> > provides ksft_perror() that is compatible with test output formatting
> > so it should be used instead of adding custom hash signs.
> > 
> > Some perror() calls are too far away from anything that sets error.
> > For those call sites, ksft_print_msg() must be used instead.
> > 
> > Convert perror() to ksft_perror() or ksft_print_msg().
> > 
> > Other related changes:
> > - Remove hash signs
> > - Remove trailing stops & newlines from ksft_perror()
> > - Add terminating newlines for converted ksft_print_msg()
> > - Use consistent capitalization
> > 
> 
> Another great cleanup. Also thanks for fixing some non-sensical messages.
> 
> ...
> 
> > @@ -149,7 +149,7 @@ int cat_perf_miss_val(int cpu_no, int n, char *cache_type)
> >  	param.num_of_runs = 0;
> >  
> >  	if (pipe(pipefd)) {
> > -		perror("# Unable to create pipe");
> > +		ksft_perror("Unable to create pipe");
> >  		return errno;
> >  	}
> >  
> > @@ -185,7 +185,7 @@ int cat_perf_miss_val(int cpu_no, int n, char *cache_type)
> >  			 * Just print the error message.
> >  			 * Let while(1) run and wait for itself to be killed.
> >  			 */
> > -			perror("# failed signaling parent process");
> > +			ksft_perror("Failed signaling parent process");
> >  
> 
> Partial writes are not actually errors and it cannot be expected that errno be set
> in these cases. In these cases I think ksft_print_msg() would be more appropriate.

I can change those to use print instead although I don't think these will
fail for other reasons than a real error as the pipe should be empty and 
only single byte is written to it.

> >  		if (fprintf(fp, "Pid: %d \t Mem_BW_iMC: %f \t Mem_BW_resc: %lu \t Difference: %lu\n",
> >  			    bm_pid, bw_imc, bw_resc, diff) <= 0) {
> > +			ksft_perror("Could not log results");
> >  			fclose(fp);
> > -			perror("Could not log results.");
> >  
> >  			return errno;
> 
> >From what I can tell fprintf() does not set errno on error. Perhaps this
> should rather be ksft_print_msg()?

Oh, what a stupid gotcha in libc. I just assumed it does set errno without 
even checking... because why it wouldn't follow the custom. ...It seems 
nothing can be relied on :-/.

-- 
 i.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ