]> git.hungrycats.org Git - linux/commitdiff
[PATCH] make jffs/jffs2 work with signal changes
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Sun, 6 Oct 2002 08:57:47 +0000 (01:57 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Sun, 6 Oct 2002 08:57:47 +0000 (01:57 -0700)
fs/jffs/intrep.c
fs/jffs2/background.c

index e0c56268111e2522107c29d8d660bb331baa013c..2ffab8e294fa3cf5c9d8e498c15c135e5e0e2c25 100644 (file)
@@ -3376,10 +3376,13 @@ jffs_garbage_collect_thread(void *ptr)
                 */
                while (signal_pending(current)) {
                        siginfo_t info;
-                       unsigned long signr;
+                       unsigned long signr = 0;
 
                        spin_lock_irq(&current->sig->siglock);
-                       signr = dequeue_signal(&current->blocked, &info);
+                       if (current->sig->shared_pending.head)
+                               signr = dequeue_signal(&current->sig->shared_pending, &current->blocked, &info);
+                       if (!signr)
+                               signr = dequeue_signal(&current->pending, &current->blocked, &info);
                        spin_unlock_irq(&current->sig->siglock);
 
                        switch(signr) {
index 7aa4f8e7afd9b55441af0a25ea9eed3cea283811..08383f98d2b0ce31048300dfc509d7360a8c8abd 100644 (file)
@@ -112,10 +112,13 @@ static int jffs2_garbage_collect_thread(void *_c)
                  */
                 while (signal_pending(current)) {
                         siginfo_t info;
-                        unsigned long signr;
+                        unsigned long signr = 0 ;
 
                         spin_lock_irq(&current->sig->siglock);
-                        signr = dequeue_signal(&current->blocked, &info);
+                       if (current->sig->shared_pending.head)
+                               signr = dequeue_signal(&current->sig->shared_pending, &current->blocked, &info);
+                       if (!signr)
+                               signr = dequeue_signal(&current->pending, &current->blocked, &info);
                         spin_unlock_irq(&current->sig->siglock);
 
                         switch(signr) {