Re: [patch 1/7] slab: introduce kzfree()

From: Hugh Dickins
Date: Thu Feb 19 2009 - 11:38:19 EST


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