Subject: Re: [regression] nf_iterate(), BUG: unable to handle kernel NULL pointer dereference

From: Matt Mackall <[email-masked]>
Date: Thu, 24 Jul 2008 21:59:33 -0500

On Fri, 2008-07-25 at 09:39 +0800, Herbert Xu wrote:
> On Thu, Jul 24, 2008 at 12:47:19PM -0500, Matt Mackall wrote:
> >
> > Let's try this again: did you know that ksize could fail depending on
> > kernel configuration? Most of us would answer no. That suggests the API
> > is bad. This ranks 12 on Rusty's spectrum of user-friendly APIs:
> 
> I think you misunderstood my argument.  I never suggested changing
> the existing ksize interface to return an error onto unsuspecting
> users.  I suggested creating a new interface that is explicitly
> designed to return an error if the underlying implementation
> is unable to support this.

I think that could probably be made to work. Perhaps something like:

size_t kmalloc_extra(void *); /* how many extra bytes in this kmalloc?
*/

Which, if it didn't work, could return a nice safe 0. We could argue
about signedness a bit, but I think this would always be safe.

This will also work with all our current kmalloc implementations. The
trouble was calling ksize() on kmem_cache_alloc objects, which happens
to work with SLAB and SLOB.

-- 
Mathematics is the supreme nostalgia of our time.