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: <20140426163537.GF18016@ZenIV.linux.org.uk>
Date:	Sat, 26 Apr 2014 17:35:37 +0100
From:	Al Viro <viro@...IV.linux.org.uk>
To:	Lionel Debroux <lionel_debroux@...oo.fr>
Cc:	linux-kernel@...r.kernel.org, kernel-janitors@...r.kernel.org
Subject: Re: [PATCH] drm: make variable named "refcount" atomic, like most
 refcounts in the kernel.

On Sat, Apr 26, 2014 at 06:06:15PM +0200, Lionel Debroux wrote:
> Based on PaX.

Lovely - cargo-cult at its finest.  "Most refcounts are atomic, must be
good medicine.  Shaman has spoken".

> -	int refcount;
> +	atomic_t refcount;

... therefore, all places that modify that sucker will have to be visible
in the patch.  And those are
  
> -	++item->refcount;
> +	atomic_inc(&item->refcount);
>  	ref->object = item->object;
>  	mutex_unlock(&item->mutex);

and

>  	mutex_lock(&item->mutex);
> -	BUG_ON(item->refcount == 0);
> +	BUG_ON(atomic_read(&item->refcount) == 0);
>  	BUG_ON(ref->object != item->object);
> -	if (--item->refcount == 0) {
> +	if (atomic_dec_and_test(&item->refcount)) {
>  		ref->release(ref);
>  		item->object = NULL;

Mind explaining how could we manage to reach either without item->mutex
being held, serializing the modifications?

NAK, in case it's not obvious from the above...
--
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