Messages in this thread | | | Date | Thu, 19 Feb 2009 16:34:41 +0000 (GMT) | From | Hugh Dickins <> | Subject | Re: [patch 1/7] slab: introduce kzfree() |
| |
On Thu, 19 Feb 2009, Pekka Enberg wrote: > On Wed, 2009-02-18 at 10:50 +0000, David Vrabel wrote: > > > > Johannes Weiner wrote: > > > > > +void kzfree(const void *p) > > > > > > > > Shouldn't this be void * since it writes to the memory? > > > > > > No. kfree() writes to the memory as well to update freelists, poisoning > > > and such so kzfree() is not at all different from it. > > On Thu, 2009-02-19 at 10:22 +0900, KOSAKI Motohiro wrote: > > I don't think so. It's debetable thing. > > > > poisonig is transparent feature from caller. > > but the caller of kzfree() know to fill memory and it should know. > > Debatable, sure, but doesn't seem like a big enough reason to make > kzfree() differ from kfree().
There may be more important things for us to worry about, but I do strongly agree with KOSAKI-san on this.
kzfree() already differs from kfree() by a "z": that "z" says please zero the buffer pointed to; "const" says it won't modify the buffer pointed to. What sense does kzfree(const void *) make? Why is keeping the declarations the same apart from the "z" desirable?
By all means refuse to add kzfree(), but please don't add it with const.
I can see that the "const" in kfree(const void *) is debatable [looks to see how userspace free() is defined: without a const], I can see that it might be nice to have some "goesaway" attribute for such pointers instead; but I don't see how you can argue for kzalloc(const void *).
Hugh
| |