[merged] posix_typesh-cleanup-stale-__nfdbits-and-related-definitions.patch removed from -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled
     Subject: posix_types.h: cleanup stale __NFDBITS and related definitions
has been removed from the -mm tree.  Its filename was
     posix_typesh-cleanup-stale-__nfdbits-and-related-definitions.patch

This patch was dropped because it was merged into mainline or a subsystem tree

------------------------------------------------------
From: Josh Boyer <jwboyer@xxxxxxxxxx>
Subject: 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@xxxxxxxxxx>
Suggested-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Josh Boyer <jwboyer@xxxxxxxxxx>
Cc: <stable@xxxxxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---

 arch/mips/kernel/kspd.c     |    2 +-
 fs/exec.c                   |    2 +-
 fs/select.c                 |   10 +++++-----
 include/linux/posix_types.h |   18 +++---------------
 include/linux/time.h        |    8 --------
 kernel/exit.c               |    2 +-
 security/selinux/hooks.c    |    2 +-
 7 files changed, 12 insertions(+), 32 deletions(-)

diff -puN arch/mips/kernel/kspd.c~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions arch/mips/kernel/kspd.c
--- a/arch/mips/kernel/kspd.c~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions
+++ a/arch/mips/kernel/kspd.c
@@ -323,7 +323,7 @@ static void sp_cleanup(void)
 	fdt = files_fdtable(files);
 	for (;;) {
 		unsigned long set;
-		i = j * __NFDBITS;
+		i = j * BITS_PER_LONG;
 		if (i >= fdt->max_fds)
 			break;
 		set = fdt->open_fds[j++];
diff -puN fs/exec.c~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions fs/exec.c
--- a/fs/exec.c~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions
+++ a/fs/exec.c
@@ -1020,7 +1020,7 @@ static void flush_old_files(struct files
 		unsigned long set, i;
 
 		j++;
-		i = j * __NFDBITS;
+		i = j * BITS_PER_LONG;
 		fdt = files_fdtable(files);
 		if (i >= fdt->max_fds)
 			break;
diff -puN fs/select.c~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions fs/select.c
--- a/fs/select.c~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions
+++ a/fs/select.c
@@ -345,8 +345,8 @@ static int max_select_fd(unsigned long n
 	struct fdtable *fdt;
 
 	/* handle last in-complete long-word first */
-	set = ~(~0UL << (n & (__NFDBITS-1)));
-	n /= __NFDBITS;
+	set = ~(~0UL << (n & (BITS_PER_LONG-1)));
+	n /= BITS_PER_LONG;
 	fdt = files_fdtable(current->files);
 	open_fds = fdt->open_fds + n;
 	max = 0;
@@ -373,7 +373,7 @@ get_max:
 			max++;
 			set >>= 1;
 		} while (set);
-		max += n * __NFDBITS;
+		max += n * BITS_PER_LONG;
 	}
 
 	return max;
@@ -435,11 +435,11 @@ int do_select(int n, fd_set_bits *fds, s
 			in = *inp++; out = *outp++; ex = *exp++;
 			all_bits = in | out | ex;
 			if (all_bits == 0) {
-				i += __NFDBITS;
+				i += BITS_PER_LONG;
 				continue;
 			}
 
-			for (j = 0; j < __NFDBITS; ++j, ++i, bit <<= 1) {
+			for (j = 0; j < BITS_PER_LONG; ++j, ++i, bit <<= 1) {
 				int fput_needed;
 				if (i >= n)
 					break;
diff -puN include/linux/posix_types.h~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions include/linux/posix_types.h
--- a/include/linux/posix_types.h~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions
+++ a/include/linux/posix_types.h
@@ -15,26 +15,14 @@
  */
 
 /*
- * Those macros may have been defined in <gnu/types.h>. But we always
- * use the ones here. 
+ * This macro may have been defined in <gnu/types.h>. But we always
+ * use the one here. 
  */
-#undef __NFDBITS
-#define __NFDBITS	(8 * sizeof(unsigned long))
-
 #undef __FD_SETSIZE
 #define __FD_SETSIZE	1024
 
-#undef __FDSET_LONGS
-#define __FDSET_LONGS	(__FD_SETSIZE/__NFDBITS)
-
-#undef __FDELT
-#define	__FDELT(d)	((d) / __NFDBITS)
-
-#undef __FDMASK
-#define	__FDMASK(d)	(1UL << ((d) % __NFDBITS))
-
 typedef struct {
-	unsigned long fds_bits [__FDSET_LONGS];
+	unsigned long fds_bits [__FD_SETSIZE / (8 * sizeof(long))];
 } __kernel_fd_set;
 
 /* Type of a signal handler.  */
diff -puN include/linux/time.h~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions include/linux/time.h
--- a/include/linux/time.h~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions
+++ a/include/linux/time.h
@@ -257,14 +257,6 @@ static __always_inline void timespec_add
 
 #endif /* __KERNEL__ */
 
-#define NFDBITS			__NFDBITS
-
-#define FD_SETSIZE		__FD_SETSIZE
-#define FD_SET(fd,fdsetp)	__FD_SET(fd,fdsetp)
-#define FD_CLR(fd,fdsetp)	__FD_CLR(fd,fdsetp)
-#define FD_ISSET(fd,fdsetp)	__FD_ISSET(fd,fdsetp)
-#define FD_ZERO(fdsetp)		__FD_ZERO(fdsetp)
-
 /*
  * Names of the interval timers, and structure
  * defining a timer setting:
diff -puN kernel/exit.c~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions kernel/exit.c
--- a/kernel/exit.c~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions
+++ a/kernel/exit.c
@@ -483,7 +483,7 @@ static void close_files(struct files_str
 	rcu_read_unlock();
 	for (;;) {
 		unsigned long set;
-		i = j * __NFDBITS;
+		i = j * BITS_PER_LONG;
 		if (i >= fdt->max_fds)
 			break;
 		set = fdt->open_fds[j++];
diff -puN security/selinux/hooks.c~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions security/selinux/hooks.c
--- a/security/selinux/hooks.c~posix_typesh-cleanup-stale-__nfdbits-and-related-definitions
+++ a/security/selinux/hooks.c
@@ -2129,7 +2129,7 @@ static inline void flush_unauthorized_fi
 		int fd;
 
 		j++;
-		i = j * __NFDBITS;
+		i = j * BITS_PER_LONG;
 		fdt = files_fdtable(files);
 		if (i >= fdt->max_fds)
 			break;
_

Patches currently in -mm which might be from jwboyer@xxxxxxxxxx are

origin.patch
linux-next.patch

--
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux