aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/coredump.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/fs/coredump.c b/fs/coredump.c
index d52f6bd5ad8e..f91cfd8cd5f2 100644
--- a/fs/coredump.c
+++ b/fs/coredump.c
@@ -280,8 +280,8 @@ static int zap_process(struct task_struct *start, int exit_code)
280 return nr; 280 return nr;
281} 281}
282 282
283static inline int zap_threads(struct task_struct *tsk, struct mm_struct *mm, 283static int zap_threads(struct task_struct *tsk, struct mm_struct *mm,
284 struct core_state *core_state, int exit_code) 284 struct core_state *core_state, int exit_code)
285{ 285{
286 struct task_struct *g, *p; 286 struct task_struct *g, *p;
287 unsigned long flags; 287 unsigned long flags;
@@ -291,6 +291,9 @@ static inline int zap_threads(struct task_struct *tsk, struct mm_struct *mm,
291 if (!signal_group_exit(tsk->signal)) { 291 if (!signal_group_exit(tsk->signal)) {
292 mm->core_state = core_state; 292 mm->core_state = core_state;
293 nr = zap_process(tsk, exit_code); 293 nr = zap_process(tsk, exit_code);
294 /* ignore all signals except SIGKILL, see prepare_signal() */
295 tsk->signal->flags |= SIGNAL_GROUP_COREDUMP;
296 clear_tsk_thread_flag(tsk, TIF_SIGPENDING);
294 } 297 }
295 spin_unlock_irq(&tsk->sighand->siglock); 298 spin_unlock_irq(&tsk->sighand->siglock);
296 if (unlikely(nr < 0)) 299 if (unlikely(nr < 0))
@@ -514,12 +517,6 @@ void do_coredump(siginfo_t *siginfo)
514 517
515 old_cred = override_creds(cred); 518 old_cred = override_creds(cred);
516 519
517 /*
518 * Clear any false indication of pending signals that might
519 * be seen by the filesystem code called to write the core file.
520 */
521 clear_thread_flag(TIF_SIGPENDING);
522
523 ispipe = format_corename(&cn, &cprm); 520 ispipe = format_corename(&cn, &cprm);
524 521
525 if (ispipe) { 522 if (ispipe) {