]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - fs/exec.c
execve: make responsive to SIGKILL with large arguments
[net-next-2.6.git] / fs / exec.c
index 6f2d777431a8c2a6dbeac1cd9b5f2b3c3f9a4790..828dd2461d6beb7c37ed7df74ef11177c2bcba6d 100644 (file)
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -376,6 +376,9 @@ static int count(const char __user * const __user * argv, int max)
                        argv++;
                        if (i++ >= max)
                                return -E2BIG;
+
+                       if (fatal_signal_pending(current))
+                               return -ERESTARTNOHAND;
                        cond_resched();
                }
        }
@@ -419,6 +422,10 @@ static int copy_strings(int argc, const char __user *const __user *argv,
                while (len > 0) {
                        int offset, bytes_to_copy;
 
+                       if (fatal_signal_pending(current)) {
+                               ret = -ERESTARTNOHAND;
+                               goto out;
+                       }
                        cond_resched();
 
                        offset = pos % PAGE_SIZE;