aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2012-03-02 13:43:48 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-03-12 13:32:41 -0400
commitec521c173fe9b56343808dfde63e3d75b223da07 (patch)
tree7745f764c077a9709ee842d93ec82ad3fd50edb8 /fs
parentca32b5c30d690d299e814fa98284a00d56e72339 (diff)
regset: Prevent null pointer reference on readonly regsets
commit c8e252586f8d5de906385d8cf6385fee289a825e upstream. The regset common infrastructure assumed that regsets would always have .get and .set methods, but not necessarily .active methods. Unfortunately people have since written regsets without .set methods. Rather than putting in stub functions everywhere, handle regsets with null .get or .set methods explicitly. Signed-off-by: H. Peter Anvin <hpa@zytor.com> Reviewed-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Roland McGrath <roland@hack.frob.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/binfmt_elf.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 9ba2ac755a7..618493e44ae 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -1422,7 +1422,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t,
1422 for (i = 1; i < view->n; ++i) { 1422 for (i = 1; i < view->n; ++i) {
1423 const struct user_regset *regset = &view->regsets[i]; 1423 const struct user_regset *regset = &view->regsets[i];
1424 do_thread_regset_writeback(t->task, regset); 1424 do_thread_regset_writeback(t->task, regset);
1425 if (regset->core_note_type && 1425 if (regset->core_note_type && regset->get &&
1426 (!regset->active || regset->active(t->task, regset))) { 1426 (!regset->active || regset->active(t->task, regset))) {
1427 int ret; 1427 int ret;
1428 size_t size = regset->n * regset->size; 1428 size_t size = regset->n * regset->size;