diff options
| author | Takashi Iwai <tiwai@suse.de> | 2010-12-13 09:28:43 +0100 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2010-12-13 09:28:43 +0100 |
| commit | 20aeeb356ba2e8daa99b5942c528ae2b3ea28433 (patch) | |
| tree | d2cebc7039954851998d592123899f5627def7a9 /kernel/exit.c | |
| parent | 07a9e2b2fbdda631eeff54e4b8ebcaaea71be538 (diff) | |
| parent | 5b84ba26a9672e615897234fa5efd3eea2d6b295 (diff) | |
Merge branch 'topic/workq-update' into topic/asoc
Conflicts:
sound/soc/codecs/wm8350.c
sound/soc/codecs/wm8753.c
sound/soc/sh/fsi.c
sound/soc/soc-core.c
Diffstat (limited to 'kernel/exit.c')
| -rw-r--r-- | kernel/exit.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 21aa7b3001f..676149a4ac5 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -914,6 +914,15 @@ NORET_TYPE void do_exit(long code) if (unlikely(!tsk->pid)) panic("Attempted to kill the idle task!"); + /* + * If do_exit is called because this processes oopsed, it's possible + * that get_fs() was left as KERNEL_DS, so reset it to USER_DS before + * continuing. Amongst other possible reasons, this is to prevent + * mm_release()->clear_child_tid() from writing to a user-controlled + * kernel address. + */ + set_fs(USER_DS); + tracehook_report_exit(&code); validate_creds_for_do_exit(tsk); |
