Re: [PATCH] Use NULL instead of integer 0 in security/selinux/

From: Eric W. Biederman
Date: Fri Jul 09 2004 - 15:43:15 EST


Linus Torvalds <torvalds@xxxxxxxx> writes:

> On Thu, 8 Jul 2004, Herbert Xu wrote:
> >
> > Chris Wright <chrisw@xxxxxxxx> wrote:
> > > Fixup another round of sparse warnings of the type:
> > > warning: Using plain integer as NULL pointer
> >
> > What's wrong with using 0 as the NULL pointer? In contexts where
> > a plain 0 is unsafe, NULL is usually unsafe as well.
>
> It's not about "unsafe". It's about being WRONG.

Does this mean constructs like:
``if (pointer)'' and ``if (!pointer)'' are also outlawed.

And do we then need to initialize static pointers to NULL instead
of letting them be implicitly 0.

Is doing memset(&(struct with_embeded_pointers), 0, sizeof(struct))
also wrong?

I don't see that 0 is WRONG. I do agree that ``((void *)0)'' is
slightly more typesafe than ``0'', but since we don't have a lot of
(void *) pointers in the kernel that is still the WRONG pointer type.

I do see that NULL has superior readability and maintainability and so
should be encouraged by Documentation/CodingStyle.

The B and K&R roots of a simple single type language are what give C
most of it's simplicity flexibility and power. Please don't be so
eager to throw those out.

You want to be so typesafe it sounds like you want to recode the
kernel in Pascal. You've written sparse, so it should be just a little
more work to write a Pascal backend. After that the kernel will be so
typesafe the compiler won't let us poor programmers get it wrong.

Eric
-
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/