diff options
| author | Josh Boyer <jwboyer@redhat.com> | 2012-07-25 10:40:34 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-26 16:36:43 -0400 |
| commit | 8ded2bbc1845e19c771eb55209aab166ef011243 (patch) | |
| tree | 9ab400cdd407a9426fdfcc3432d7c0e19a0607ed /include/linux | |
| parent | 4cb38750d49010ae72e718d46605ac9ba5a851b4 (diff) | |
posix_types.h: Cleanup stale __NFDBITS and related definitions
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@redhat.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
CC: <stable@vger.kernel.org>
Signed-off-by: Josh Boyer <jwboyer@redhat.com>
[ .. and fix up whitespace as per akpm ]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/posix_types.h | 18 | ||||
| -rw-r--r-- | include/linux/time.h | 8 |
2 files changed, 3 insertions, 23 deletions
diff --git a/include/linux/posix_types.h b/include/linux/posix_types.h index f04c98cf44f3..988f76e636e3 100644 --- a/include/linux/posix_types.h +++ b/include/linux/posix_types.h | |||
| @@ -15,26 +15,14 @@ | |||
| 15 | */ | 15 | */ |
| 16 | 16 | ||
| 17 | /* | 17 | /* |
| 18 | * Those macros may have been defined in <gnu/types.h>. But we always | 18 | * This macro may have been defined in <gnu/types.h>. But we always |
| 19 | * use the ones here. | 19 | * use the one here. |
| 20 | */ | 20 | */ |
| 21 | #undef __NFDBITS | ||
| 22 | #define __NFDBITS (8 * sizeof(unsigned long)) | ||
| 23 | |||
| 24 | #undef __FD_SETSIZE | 21 | #undef __FD_SETSIZE |
| 25 | #define __FD_SETSIZE 1024 | 22 | #define __FD_SETSIZE 1024 |
| 26 | 23 | ||
| 27 | #undef __FDSET_LONGS | ||
| 28 | #define __FDSET_LONGS (__FD_SETSIZE/__NFDBITS) | ||
| 29 | |||
| 30 | #undef __FDELT | ||
| 31 | #define __FDELT(d) ((d) / __NFDBITS) | ||
| 32 | |||
| 33 | #undef __FDMASK | ||
| 34 | #define __FDMASK(d) (1UL << ((d) % __NFDBITS)) | ||
| 35 | |||
| 36 | typedef struct { | 24 | typedef struct { |
| 37 | unsigned long fds_bits [__FDSET_LONGS]; | 25 | unsigned long fds_bits[__FD_SETSIZE / (8 * sizeof(long))]; |
| 38 | } __kernel_fd_set; | 26 | } __kernel_fd_set; |
| 39 | 27 | ||
| 40 | /* Type of a signal handler. */ | 28 | /* Type of a signal handler. */ |
diff --git a/include/linux/time.h b/include/linux/time.h index 179f4d6755fc..c81c5e40fcb5 100644 --- a/include/linux/time.h +++ b/include/linux/time.h | |||
| @@ -257,14 +257,6 @@ static __always_inline void timespec_add_ns(struct timespec *a, u64 ns) | |||
| 257 | 257 | ||
| 258 | #endif /* __KERNEL__ */ | 258 | #endif /* __KERNEL__ */ |
| 259 | 259 | ||
| 260 | #define NFDBITS __NFDBITS | ||
| 261 | |||
| 262 | #define FD_SETSIZE __FD_SETSIZE | ||
| 263 | #define FD_SET(fd,fdsetp) __FD_SET(fd,fdsetp) | ||
| 264 | #define FD_CLR(fd,fdsetp) __FD_CLR(fd,fdsetp) | ||
| 265 | #define FD_ISSET(fd,fdsetp) __FD_ISSET(fd,fdsetp) | ||
| 266 | #define FD_ZERO(fdsetp) __FD_ZERO(fdsetp) | ||
| 267 | |||
| 268 | /* | 260 | /* |
| 269 | * Names of the interval timers, and structure | 261 | * Names of the interval timers, and structure |
| 270 | * defining a timer setting: | 262 | * defining a timer setting: |
