From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S261509AbVFCTWr (ORCPT ); Fri, 3 Jun 2005 15:22:47 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S261508AbVFCTWr (ORCPT ); Fri, 3 Jun 2005 15:22:47 -0400 Received: from mail2.asahi-net.or.jp ([202.224.39.198]:23891 "EHLO mail.asahi-net.or.jp") by vger.kernel.org with ESMTP id S261341AbVFCTWa (ORCPT ); Fri, 3 Jun 2005 15:22:30 -0400 Date: Sat, 04 Jun 2005 04:22:21 +0900 Message-ID: From: Yoshinori Sato To: Andrew Morton Cc: linux-kernel@vger.kernel.org Subject: [PATCH] binfmt_flat mmap flag fix User-Agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) LIMIT/1.14.9 (Domyoji) APEL/10.6 Emacs/21.4 (i386-pc-linux-gnu) MULE/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Because flag of mmap is not handed really, do not work normally. Signed-off-by: Yoshinori Sato --- linux-2.6.12-rc5/fs/binfmt_flat.c 2005-05-25 12:31:20.000000000 +0900 +++ linux-2.6.12-rc5-ysato/fs/binfmt_flat.c 2005-06-04 03:53:00.000000000 +0900 @@ -520,7 +520,7 @@ DBG_FLT("BINFMT_FLAT: ROM mapping of file (we hope)\n"); down_write(¤t->mm->mmap_sem); - textpos = do_mmap(bprm->file, 0, text_len, PROT_READ|PROT_EXEC, 0, 0); + textpos = do_mmap(bprm->file, 0, text_len, PROT_READ|PROT_EXEC, MAP_SHARED, 0); up_write(¤t->mm->mmap_sem); if (!textpos || textpos >= (unsigned long) -4096) { if (!textpos) @@ -532,7 +532,7 @@ down_write(¤t->mm->mmap_sem); realdatastart = do_mmap(0, 0, data_len + extra + MAX_SHARED_LIBS * sizeof(unsigned long), - PROT_READ|PROT_WRITE|PROT_EXEC, 0, 0); + PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 0); up_write(¤t->mm->mmap_sem); if (realdatastart == 0 || realdatastart >= (unsigned long)-4096) { @@ -574,7 +574,7 @@ down_write(¤t->mm->mmap_sem); textpos = do_mmap(0, 0, text_len + data_len + extra + MAX_SHARED_LIBS * sizeof(unsigned long), - PROT_READ | PROT_EXEC | PROT_WRITE, 0, 0); + PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE, 0); up_write(¤t->mm->mmap_sem); if (!textpos || textpos >= (unsigned long) -4096) { if (!textpos) -- Yoshinori Sato at CodeFest Japan 2005