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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sun, 28 Aug 2011 19:56:01 +0200
From:	Oleg Nesterov <oleg@...hat.com>
To:	Tejun Heo <tj@...nel.org>
Cc:	rjw@...k.pl, menage@...gle.com, linux-kernel@...r.kernel.org,
	arnd@...db.de
Subject: Re: [PATCH 09/16] freezer: make freezing indicate freeze condition
	in effect

On 08/19, Tejun Heo wrote:
>
> This patch makes freezing indicate that freeze condition is in effect.
> A task enters and stays frozen if freezing.  This makes PF_FROZEN
> manipulation done only by the task itself and prevents wakeup from
> __thaw_task() leaking outside of refrigerator.

but this looks racy.

> @@ -44,7 +48,7 @@ bool __refrigerator(bool check_kthr_stop)
>  
>  	for (;;) {
>  		set_current_state(TASK_UNINTERRUPTIBLE);
> -		if (!frozen(current) ||
> +		if (!freezing(current) ||
>  		    (check_kthr_stop && kthread_should_stop()))
>  			break;
>  		was_frozen = true;
> @@ -54,6 +58,11 @@ bool __refrigerator(bool check_kthr_stop)
>  	/* Remove the accounting blocker */
>  	current->flags &= ~PF_FREEZING;
>  
> +	/* leave FROZEN */
> +	spin_lock_irq(&freezer_lock);
> +	current->flags &= ~PF_FROZEN;
> +	spin_unlock_irq(&freezer_lock);

What if freezing() is true again when we are going to clear
PF_FROZEN?

In this case the 2nd try_to_freeze_tasks() can see this task
as already frozen and return success while it is going to run.

Oleg.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ