From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759595AbZBFRLc (ORCPT ); Fri, 6 Feb 2009 12:11:32 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753065AbZBFRLI (ORCPT ); Fri, 6 Feb 2009 12:11:08 -0500 Received: from mtagate7.de.ibm.com ([195.212.29.156]:46654 "EHLO mtagate7.de.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752776AbZBFRLH (ORCPT ); Fri, 6 Feb 2009 12:11:07 -0500 Subject: [BUG] binfmt_elf: get_user() called in vma_dump_size() after set_fs(KERNEL_DS) From: Gerald Schaefer To: Roland McGrath Cc: linux-kernel@vger.kernel.org, Martin Schwidefsky , Heiko Carstens , Andrew Morton , Linus Torvalds Content-Type: text/plain Date: Fri, 06 Feb 2009 18:10:35 +0100 Message-Id: <1233940235.22140.9.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.12.3 (2.12.3-8.el5_2.2) Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, elf_core_dump() does a set_fs(KERNEL_DS) and then calls vma_dump_size(), which uses get_user() to check for an ELF header at vma->vm_start in the user mapping. This is a bug because vm_start is a user virtual address and get_user() will fail or even read from a kernel address (KERNEL_DS). Maybe a get_user_pages() should be used to get the user data, or a temporary set_fs(USER_DS)? -- Gerald