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:   Thu, 19 Oct 2017 14:43:25 +0200 (CEST)
From:   Thomas Gleixner <tglx@...utronix.de>
To:     Matt Redfearn <matt.redfearn@...s.com>
cc:     Daniel Lezcano <daniel.lezcano@...aro.org>,
        James Hogan <james.hogan@...s.com>, linux-mips@...ux-mips.org,
        James Hogan <jhogan@...nel.org>,
        Martin Schwidefsky <schwidefsky@...ibm.com>,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/3] clockevents: Retry programming min delta up to 10
 times

On Thu, 19 Oct 2017, Matt Redfearn wrote:
>  	unsigned long long clc;
>  	int64_t delta;
> +	int i;
>  
> -	delta = dev->min_delta_ns;
> -	dev->next_event = ktime_add_ns(ktime_get(), delta);
> +	for (i = 0;;) {

Bah. What's wrong with

	for (i = 0; i < 10; i++) {

	    	....
		if (!(dev->set_next_event((unsigned long) clc, dev))
			return 0;
	}
	return -ETIME;

Hmm?

> +		delta = dev->min_delta_ns;
> +		dev->next_event = ktime_add_ns(ktime_get(), delta);
>  
> -	if (clockevent_state_shutdown(dev))
> -		return 0;
> +		if (clockevent_state_shutdown(dev))
> +			return 0;
>  
> -	dev->retries++;
> -	clc = ((unsigned long long) delta * dev->mult) >> dev->shift;
> -	return dev->set_next_event((unsigned long) clc, dev);
> +		dev->retries++;
> +		clc = ((unsigned long long) delta * dev->mult) >> dev->shift;

I'd rather make that:

	delta = 0;
	for (i = 0; i < 10; i++) {
		delta += dev->min_delta_ns;
		dev->next_event = ktime_add_ns(ktime_get(), delta);
		clc = .....
	   	.....

That makes it more likely to succeed fast. Hmm?

Thanks,

	tglx

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ