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, 17 Jan 2008 17:15:56 -0800 (PST)
From:	Linus Torvalds <torvalds@...ux-foundation.org>
To:	David Schwartz <davids@...master.com>
cc:	Johannes Weiner <hannes@...urebad.de>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	clameter@....com, penberg@...helsinki.fi
Subject: RE: Why is the kfree() argument const?



On Thu, 17 Jan 2008, David Schwartz wrote:
> 
> > "const" has nothing to do with "logical state".  It has one meaning, and
> > one meaning only: the compiler should complain if that particular type is
> > used to do a write access.
> 
> Right, exactly.

So why do you complain? 

kfree() literally doesn't write to the object.

> You are the only one who has suggested it has anything to do with changes
> through other pointers or in other ways. So you are arguing against only
> yourself here.

No, I'm saying that "const" has absolutely *zero* meaning on writes to an 
object through _other_ pointers (or direct access) to the object.

And you're seemingly not understanding that *lack* of meaning.

kfree() doesn't do *squat* to the object pointed to by the pointer it is 
passed. It only uses it to look up its own data structures, of which the 
pointer is but a small detail.

And those other data structures aren't constant.

> Nobody has said it has anything to do with anything but operations through
> that pointer.

.. and I'm telling you: kfree() does *nothing* conceptually through that 
pointer. No writes, and not even any reads! Which is exactly why it's 
const.

The only thing kfree does through that pointer is to update its own 
concept of what memory it has free.

Now, what it does to its own free memory is just an implementation detail, 
and has nothing what-so-ever to do with the pointer you passed it.

See?

		Linus
--
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