]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/select.c
numastat.txt: standardize document format
[karo-tx-linux.git] / fs / select.c
index d6c652a31e99d18d2d924af983c11504315af56f..9d5f15ed87fe7999eaaad22497899e696ad34147 100644 (file)
@@ -180,7 +180,7 @@ static struct poll_table_entry *poll_get_entry(struct poll_wqueues *p)
        return table->entry++;
 }
 
-static int __pollwake(wait_queue_t *wait, unsigned mode, int sync, void *key)
+static int __pollwake(wait_queue_entry_t *wait, unsigned mode, int sync, void *key)
 {
        struct poll_wqueues *pwq = wait->private;
        DECLARE_WAITQUEUE(dummy_wait, pwq->polling_task);
@@ -206,7 +206,7 @@ static int __pollwake(wait_queue_t *wait, unsigned mode, int sync, void *key)
        return default_wake_function(&dummy_wait, mode, sync, key);
 }
 
-static int pollwake(wait_queue_t *wait, unsigned mode, int sync, void *key)
+static int pollwake(wait_queue_entry_t *wait, unsigned mode, int sync, void *key)
 {
        struct poll_table_entry *entry;
 
@@ -1161,59 +1161,25 @@ static
 int compat_get_fd_set(unsigned long nr, compat_ulong_t __user *ufdset,
                        unsigned long *fdset)
 {
-       nr = DIV_ROUND_UP(nr, __COMPAT_NFDBITS);
        if (ufdset) {
-               unsigned long odd;
-
-               if (!access_ok(VERIFY_WRITE, ufdset, nr*sizeof(compat_ulong_t)))
-                       return -EFAULT;
-
-               odd = nr & 1UL;
-               nr &= ~1UL;
-               while (nr) {
-                       unsigned long h, l;
-                       if (__get_user(l, ufdset) || __get_user(h, ufdset+1))
-                               return -EFAULT;
-                       ufdset += 2;
-                       *fdset++ = h << 32 | l;
-                       nr -= 2;
-               }
-               if (odd && __get_user(*fdset, ufdset))
-                       return -EFAULT;
+               return compat_get_bitmap(fdset, ufdset, nr);
        } else {
                /* Tricky, must clear full unsigned long in the
-                * kernel fdset at the end, this makes sure that
+                * kernel fdset at the end, ALIGN makes sure that
                 * actually happens.
                 */
-               memset(fdset, 0, ((nr + 1) & ~1)*sizeof(compat_ulong_t));
+               memset(fdset, 0, ALIGN(nr, BITS_PER_LONG));
+               return 0;
        }
-       return 0;
 }
 
 static
 int compat_set_fd_set(unsigned long nr, compat_ulong_t __user *ufdset,
                      unsigned long *fdset)
 {
-       unsigned long odd;
-       nr = DIV_ROUND_UP(nr, __COMPAT_NFDBITS);
-
        if (!ufdset)
                return 0;
-
-       odd = nr & 1UL;
-       nr &= ~1UL;
-       while (nr) {
-               unsigned long h, l;
-               l = *fdset++;
-               h = l >> 32;
-               if (__put_user(l, ufdset) || __put_user(h, ufdset+1))
-                       return -EFAULT;
-               ufdset += 2;
-               nr -= 2;
-       }
-       if (odd && __put_user(*fdset, ufdset))
-               return -EFAULT;
-       return 0;
+       return compat_put_bitmap(ufdset, fdset, nr);
 }