Re: [PATCH] posix_types.h: Cleanup stale __NFDBITS and relateddefinitions

From: Ben Hutchings
Date: Wed Jul 25 2012 - 22:01:18 EST


On Wed, 2012-07-25 at 21:27 -0400, Josh Boyer wrote:
> On Thu, Jul 26, 2012 at 12:26:36AM +0100, Ben Hutchings wrote:
> > On Wed, 2012-07-25 at 10:40 -0400, Josh Boyer wrote:
> > > Recently, glibc made a change to suppress sign-conversion warnings in FD_SET
> > > (glibc commit ceb9e56b3d1). This uncovered an issue with the kernel's
> > > definition of __NFDBITS if applications #include <linux/types.h> after
> > > including <sys/select.h>. A build failure would be seen when passing the
> > > -Werror=sign-compare and -D_FORTIFY_SOURCE=2 flags to gcc.
> > >
> > > It was suggested that the kernel should either match the glibc definition of
> > > __NFDBITS or remove that entirely. The current in-kernel uses of __NFDBITS
> > > can be replaced with BITS_PER_LONG, and there are no uses of the related
> > > __FDELT and __FDMASK defines. Given that, we'll continue the cleanup that
> > > was started with commit 8b3d1cda4f5f ("posix_types: Remove fd_set macros")
> > > and drop the remaining unused macros.
> > >
> > > Additionally, linux/time.h has similar macros defined that expand to nothing
> > > so we'll remove those at the same time.
> > >
> > > Reported-by: Jeff Law <law@xxxxxxxxxx>
> > > Suggested-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> > > CC: <stable@xxxxxxxxxxxxxxx>
> >
> > # v3.4+
> >
> > (as 8b3d1cda4f5f went into 3.4)
> >
>
> Indeed. However, I believe Linus pointed out that even before
> 8b3d1cda4f5f the macros that were removed weren't actually used.
> It's likely safe to go back further than just 3.4.
>
> I'll verify again in the morning and include the furthest back we could
> remove these. For now, let's go with what you suggest to be safe.

Yes, on reflection, this is mostly independent of commit 8b3d1cda4f5f.

The problem is that userland might accidentally be depending on getting
the definitions of NFDBITS and FD_SETSIZE from <linux/time.h>. But,
having now read Linus's history of the rotting of these particular bits
<http://article.gmane.org/gmane.linux.kernel/1332560>, I agree this is
very unlikely. So, I withdraw my request to restrict the target stable
versions.

Ben.

--
Ben Hutchings
Humans are not rational beings; they are rationalising beings.

Attachment: signature.asc
Description: This is a digitally signed message part