diff -Naur eglibc-2.15-17022/misc/sys/select.h eglibc-2.15-17022.patch/misc/sys/select.h
--- eglibc-2.15-17022/misc/sys/select.h	2012-02-07 05:47:47.000000000 +0100
+++ eglibc-2.15-17022.patch/misc/sys/select.h	2012-02-07 06:12:34.237528007 +0100
@@ -52,14 +52,14 @@
 
 
 /* The fd_set member is required to be an array of longs.  */
-typedef long int __fd_mask;
+typedef unsigned long int __fd_mask;
 
 /* Some versions of <linux/posix_types.h> define this macros.  */
 #undef	__NFDBITS
 /* It's easier to assume 8-bit bytes than to get CHAR_BIT.  */
 #define __NFDBITS	(8 * (int) sizeof (__fd_mask))
-#define	__FD_ELT(d)	((d) / __NFDBITS)
-#define	__FD_MASK(d)	((__fd_mask) 1 << ((d) % __NFDBITS))
+#define	__FD_ELT(d)	(((unsigned long int)d) / __NFDBITS)
+#define	__FD_MASK(d)	((__fd_mask) 1 << (((unsigned long int)d) % __NFDBITS))
 
 /* fd_set for select and pselect.  */
 typedef struct
