From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id E3243C2BBCA for ; Fri, 28 Jun 2024 07:48:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A8886B0082; Fri, 28 Jun 2024 03:48:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 657626B0088; Fri, 28 Jun 2024 03:48:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4F8136B0083; Fri, 28 Jun 2024 03:48:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 31B7D6B008A for ; Fri, 28 Jun 2024 03:48:20 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id AAD201C2A6A for ; Fri, 28 Jun 2024 07:48:19 +0000 (UTC) X-FDA: 82279519518.20.762CD39 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by imf21.hostedemail.com (Postfix) with ESMTP id D09341C0010 for ; Fri, 28 Jun 2024 07:48:17 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=aFJpWNQC; spf=pass (imf21.hostedemail.com: domain of schmitzmic@gmail.com designates 209.85.210.169 as permitted sender) smtp.mailfrom=schmitzmic@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1719560879; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=TrdAJ7prahjV7cmIUKRAXYNpyINLeUIz8pA2BKKDXXg=; b=QSrhiBUOCy45vSlmgDnQ7sPX94b7DA9EWFTULVeAzgxHx8HmHZP5qEuOXDHs03o8tVcOvh Xn3wNT36NdKy4NhjuP9eEfKKPAwK6QD1IYxwtdr/YNyD4Cb/QDyEnrG3QCW1w52+ByBWor Bz4VpHliaQpF/FtXSJc/bdx2y/oGsS4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719560879; a=rsa-sha256; cv=none; b=aZBaDNTKLl5TELsB2RPI15JkzMf9KxoSASkOi7qIlD1He6FlJYQ5N4UXqDVD6fg1MELQDu hPZtjNmSQt1G0wke5CITIxgUPh/tntoQ/deocjiMvW7e38MLhwjWp/MShYCtp7AqC0mTkV MlcY6m6AFjgI/3I4qRDKZn93CudTNmY= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=aFJpWNQC; spf=pass (imf21.hostedemail.com: domain of schmitzmic@gmail.com designates 209.85.210.169 as permitted sender) smtp.mailfrom=schmitzmic@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-70670188420so252583b3a.2 for ; Fri, 28 Jun 2024 00:48:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719560897; x=1720165697; darn=kvack.org; h=content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:cc:references:to:subject:from:to:cc:subject:date :message-id:reply-to; bh=TrdAJ7prahjV7cmIUKRAXYNpyINLeUIz8pA2BKKDXXg=; b=aFJpWNQCocNscGr6y1htvNMjDHCh5IEslvYnvZi4jBqhbqe56qZ8olsWaZSWsmpFss jAx2IBH8/1Ha2euNbFTYE6x+FSZfQDF2RgQNAkDluYkOOEghyaXB37sWZdDdcY4XMZWi dFulQ5kxSSN9PouKFrYcovdCEx58+D86FL14ScN622UHpJP+LshwT1Po8two3rDjMS7b c4eYQUPuMuo+eTfURBvNlGKzfYiSgZ1z2ojfyZjvurfyTSEPyVTNk/LNp4Q1ZageMdNc xs8i+qNF1axVylGnae7I3DCCLPUyn5O7IEnEPJBI9ilTcESXkqEiNpao+wDit8I7PQB+ Oq1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719560897; x=1720165697; h=content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:cc:references:to:subject:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=TrdAJ7prahjV7cmIUKRAXYNpyINLeUIz8pA2BKKDXXg=; b=TfNTICUU6Rd3jeTmhFC2bp0qnu3wAFfHLLVnRJLXlSZYJwwDxNyft9xdpLKteEFrQd Uq17mMLaHaKSA0BawLZqsi0ul4ELT3oPeMjuaGulY5akcYZGIFexuXdc+6anG+CqXPiY 2kMPWPhqjWSnc4FFEDKzWa9PZbsVBdorC23AFfbLJjYTfsrVV3Ad2pSwZngUgdGEYhH6 AjY74EdvTB6XS4hI23YKT0QhKIN3zT90Ox17eMqGHGNN/plqD4Kx3iQmIERHXd5OSlhU OvlVtOZiAiQmg001C8hJRUaquQzPFM1vDrsoDnpJ5Ne5J3OcH9NiHDQLvJ5mIRmtxHn+ gmyw== X-Forwarded-Encrypted: i=1; AJvYcCVyfjM4ADAHrBJw+OiXWyptIDorvV5GrUI1D5+wcALsx5oHA6tDXkZLCB83T8s+WK/g2JwP4bJGyxgLp5sjxl522S4= X-Gm-Message-State: AOJu0YxuTz4VBl3eKp6SP0dDCcgqNSImuylsso6ph/n7j0uCFlHbqQRq Hz9qT3UgRfzmk6jocs75AmUP318kFL9O1emA9YoVCCGB0ZbLh02a X-Google-Smtp-Source: AGHT+IHPbTtLLEsOZODqYZYiT8DLFMT1ORaglShUyUxLJUAyBFfObtVuj7Tta5pTqrRu4jknc++ryw== X-Received: by 2002:a05:6a00:22cc:b0:705:ddbf:5c05 with SMTP id d2e1a72fcca58-7066e52a7cbmr19881378b3a.11.1719560896543; Fri, 28 Jun 2024 00:48:16 -0700 (PDT) Received: from [10.1.1.24] (222-152-175-63-fibre.sparkbb.co.nz. [222.152.175.63]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-70804a91335sm926859b3a.213.2024.06.28.00.48.10 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 28 Jun 2024 00:48:16 -0700 (PDT) Subject: Re: m68k 54418 fails to execute user space To: Jean-Michel Hautbois , linux-m68k@lists.linux-m68k.org, linux-mm@kvack.org, linux-mtd@lists.infradead.org References: <735e19b6-3747-417f-ba5b-1a7da137a3a3@yoseli.org> <7fb2988d-ab89-405f-8cf1-edcdd2196376@gmail.com> <57879ac8-eaf5-48f1-b4ef-6619d9108440@yoseli.org> Cc: Greg Ungerer , Geert Uytterhoeven , Christoph Hellwig , wbx@openadk.org From: Michael Schmitz Message-ID: <64c30829-499d-fb48-16ee-891f8d8c443a@gmail.com> Date: Fri, 28 Jun 2024 19:48:08 +1200 User-Agent: Mozilla/5.0 (X11; Linux ppc; rv:45.0) Gecko/20100101 Icedove/45.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Stat-Signature: p58io499ejtf5pcdmbefan4m8q6koyjb X-Rspamd-Queue-Id: D09341C0010 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1719560897-566785 X-HE-Meta: U2FsdGVkX19xIWLRL/MauLqKG/YAYfi3IkVWGhnJBHCyF/w/y9DBwvCySdlepUSiD7+Dqp8TE19dulgbxM2ToaNePoplTZ+ovFKMvMssBtwaVAD/bULv9o/pzThlWGH0APtBfcdW/fLjlGlWa6yshnTIW5k7vYsr4/ifyOm1TUukufjAMtH5IAwRoc0Y+J+BopP6jrN3rCGneuqBfTvoxEF5Jaboc3qvEVenFGFJrvFd4vA6iJ2qAN0cyUCroUJmv9Km5ecrm61ZZqloxtDIZzVaSpPqYBDXEaj9zlotL9j4Z6AN/qBofaY+Du66t+Ed/+n1U39foIJxjc79hxBoc2DbcdkfEnMRTvHIawqvLQzYhkswgTOAZYEVZdG0XprrmWoI67TIlbP8R3+EHAuAQtdl5mXxeV6Dv28SiH0U1yvG6MFEWMfH0i5VwUBBTkm0SMNpwZDapNaLHd/2LwlxKKbdBkWPJF32fei0uW9KhYtbYMN4Kry+YJi2XF2w3UDVGEWg7+z+IzZgiJRuS19Poa1pE7N81+6MonkIkJ1rZDyH7lpWt2kaIvx9KhShhh2OBoNoOPAKU5YSySVAP2+M0xn6+XWsKmDvR3tP0rYZqiMQjKLvRhS/KaOxOFn0+C2icaFPQItIoplPgudOGxwGH7EKq2TfR1eszVv0ipcEyKqS55wON2dbqG35St4UixQPT1bAzAN7U6/mrVJb515xF0d47mM6wrBv9MqVqGp3cYzdarH5Zb4jHG/cbIJ1yRmk8MC8p+irmqLkr00X674HYePIza2c70vQQeN5DCIIM6W56mpM87k/2DQLPKcjeWJtCkCY/ZMqEK6U6jeqhHUUIfcIB+MGH2isYTKYY9RoTwltkBziiC9ymlSZYgNHZUsADAzePqcb5oHjun1dDbbImK4yDST4lSu9XVQNoC8fmoPVTBBfbTSNWGHChBFZZT815twXDmTVMWJ4GoZt0eW QG/2jFLN wQW3ROx/j9RQ8g8PoE2GoifxZg+e0uyA0u16ul1C8fTggJYxDdEZVOTUfvODqp63WgzzUEpxkBQCvnj7VGU1LvEyRyMlS6NtnR1JMqiWyjOKIgypbyw7CBnH2AESbWFMNpFxcwu+Hz/wxYNI/zHkqPefblj8I0e95GEAXS2hiLchEcVKqAr1Pw0xuDdvzFcWVD04YkGkImPng6oandFCDGg7b1axM6CSUrFkyaZus2j5EuPv7c7FBx4nk3qc0HA/q2lc1QY3I6gSiYhjbZrwlHfQDSd89RIeDI7ZeRFGmQcmUtreag2wo5daosfsZmZo3LJEHa93GLPOnenmVTbRZ+1mu+Q== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Jean-Michel, Am 28.06.2024 um 19:24 schrieb Jean-Michel Hautbois: >> I forgot to take into account that libraries are loaded only the >> binary starts executing. Can you print the same map dump in the exit >> syscall code path? That ought to show all loaded libraries at that point. > > Thanks for your suggestion ! > I changed it a bit, and I added a call in do_exit() as suggested. When > executing ls I get: > > bash-5.2# ls -l > load_elf_binary: Dump memory for ls (31): > mmap: 60000000-6001e000 r-xp 00000000 00:00 178 /lib/ld.so.1 > mmap: 6001e000-60022000 rw-p 0001c000 00:00 178 /lib/ld.so.1 > mmap: 70000000-700c2000 r-xp 00000000 00:00 28 /bin/busybox > mmap: 700c2000-700ca000 rw-p 000c0000 00:00 28 /bin/busybox > mmap: bfc1e000-bfc40000 rw-p bffde000 00:00 0 [stack] > > do_exit: Dump memory for ls (31): > mmap: 60000000-6001e000 r-xp 00000000 00:00 178 /lib/ld.so.1 > mmap: 6001e000-60020000 r--p 0001c000 00:00 178 /lib/ld.so.1 > mmap: 60020000-60022000 rw-p 0001e000 00:00 178 /lib/ld.so.1 > mmap: 60022000-6002c000 r-xp 00000000 00:00 193 /lib/libresolv.so.2 > mmap: 6002c000-6002e000 r--p 00008000 00:00 193 /lib/libresolv.so.2 > mmap: 6002e000-60030000 rw-p 0000a000 00:00 193 /lib/libresolv.so.2 > mmap: 60030000-60032000 rw-p 60030000 00:00 0 > mmap: 60032000-6015a000 r-xp 00000000 00:00 185 /lib/libc.so.6 > mmap: 6015a000-6015c000 r--p 00126000 00:00 185 /lib/libc.so.6 > mmap: 6015c000-60160000 rw-p 00128000 00:00 185 /lib/libc.so.6 > mmap: 60160000-6016e000 rw-p 60160000 00:00 0 > mmap: 70000000-700c2000 r-xp 00000000 00:00 28 /bin/busybox > mmap: 700c2000-700c4000 r--p 000c0000 00:00 28 /bin/busybox > mmap: 700c4000-700ca000 rw-p 000c2000 00:00 28 /bin/busybox > mmap: 700ca000-700ec000 rwxp 700ca000 00:00 0 [heap] > mmap: bfc1e000-bfc40000 rw-p bffde000 00:00 0 [stack] > > When I call it a second time, I get: > > bash-5.2# ls -l > load_elf_binary: Dump memory for ls (33): > mmap: 60000000-6001e000 r-xp 00000000 00:00 178 /lib/ld.so.1 > mmap: 6001e000-60022000 rw-p 0001c000 00:00 178 /lib/ld.so.1 > mmap: 70000000-700c2000 r-xp 00000000 00:00 28 /bin/busybox > mmap: 700c2000-700ca000 rw-p 000c0000 00:00 28 /bin/busybox > mmap: bfb5a000-bfb7c000 rw-p bffde000 00:00 0 [stack] > do_exit: Dump memory for ls (33): > mmap: 60000000-6001e000 r-xp 00000000 00:00 178 /lib/ld.so.1 > mmap: 6001e000-60020000 r--p 0001c000 00:00 178 /lib/ld.so.1 > mmap: 60020000-60022000 rw-p 0001e000 00:00 178 /lib/ld.so.1 > mmap: 60022000-6002c000 r-xp 00000000 00:00 193 /lib/libresolv.so.2 > mmap: 6002c000-6002e000 r--p 00008000 00:00 193 /lib/libresolv.so.2 > mmap: 6002e000-60030000 rw-p 0000a000 00:00 193 /lib/libresolv.so.2 > mmap: 60030000-60032000 rw-p 60030000 00:00 0 > mmap: 60032000-6015a000 r-xp 00000000 00:00 185 /lib/libc.so.6 > mmap: 6015a000-6015c000 r--p 00126000 00:00 185 /lib/libc.so.6 > mmap: 6015c000-60160000 rw-p 00128000 00:00 185 /lib/libc.so.6 > mmap: 60160000-6016e000 rw-p 60160000 00:00 0 > mmap: 70000000-700c2000 r-xp 00000000 00:00 28 /bin/busybox > mmap: 700c2000-700c4000 r--p 000c0000 00:00 28 /bin/busybox > mmap: 700c4000-700ca000 rw-p 000c2000 00:00 28 /bin/busybox No heap in this second call. Can you print mm->start_brk and mm->brk please? The process memory layout is a little unusual (I would have expected the binary to be mapped before the dynamic libraries, not after). Is that expected on Coldfire, Greg? Cheers, Michael > mmap: bfb5a000-bfb7c000 rw-p bffde000 00:00 0 [stack] > > The first call generates the "ls" output, not the second one. > The helper looks like: > diff --git a/mm/mmap.c b/mm/mmap.c > index 83b4682ec85c..14d861e9cba2 100644 > --- a/mm/mmap.c > +++ b/mm/mmap.c > @@ -76,6 +76,87 @@ int mmap_rnd_compat_bits __read_mostly = > CONFIG_ARCH_MMAP_RND_COMPAT_BITS; > static bool ignore_rlimit_data; > core_param(ignore_rlimit_data, ignore_rlimit_data, bool, 0644); > > +int dump_memory_map(struct task_struct *task) > +{ > + struct mm_struct *mm = task->mm; > + struct vm_area_struct *vma; > + struct file *file; > + struct path *path; > + char *buf; > + char *pathname; > + > + if (!mm) { > + return -ENOMEM; > + } > + > + MA_STATE(mas, &mm->mm_mt, 0, -1); > + // Acquire the read lock for mmap_lock > + down_read(&mm->mmap_lock); > + mas_lock(&mas); > + for (vma = mas_find(&mas, ULONG_MAX); vma; vma = mas_find(&mas, > ULONG_MAX)) { > + char perms[5] = "---p"; // Default permissions > + // Set permissions based on vm_flags > + if (vma->vm_flags & VM_READ) perms[0] = 'r'; > + if (vma->vm_flags & VM_WRITE) perms[1] = 'w'; > + if (vma->vm_flags & VM_EXEC) perms[2] = 'x'; > + if (vma->vm_flags & VM_MAYSHARE) perms[3] = 's'; > + > + if (vma->vm_file) { // If there's an associated file > + buf = (char *)__get_free_page(GFP_KERNEL); > + if (!buf) { > + continue; // Handle memory allocation > failure > + } > + > + file = vma->vm_file; > + path = &file->f_path; > + pathname = d_path(path, buf, PAGE_SIZE); > + if (IS_ERR(pathname)) { > + pathname = NULL; > + } > + > + // Print memory area information with file path > + pr_info("%08lx-%08lx %s %08lx %02x:%02x %lu %s\n", > + vma->vm_start, vma->vm_end, > + perms, > + vma->vm_pgoff << PAGE_SHIFT, > + MAJOR(file_inode(file)->i_rdev), > + MINOR(file_inode(file)->i_rdev), > + file_inode(file)->i_ino, > + pathname ? pathname : ""); > + > + free_page((unsigned long)buf); > + } else { > + char *special_area_name = NULL; > + > + // Check for heap > + if (vma->vm_end > mm->start_brk && vma->vm_start > < mm->brk) { > + special_area_name = "[heap]"; > + } > + // Check for stack > + else if (vma->vm_start <= mm->start_stack && > vma->vm_end >= mm->start_stack) { > + special_area_name = "[stack]"; > + } > + // Check for vdso > + else if (vma->vm_flags & VM_EXEC && > vma->vm_flags & VM_READ && !vma->vm_file) { > + special_area_name = "[vdso]"; > + } > + > + // Print memory area information without file path > + pr_info("%08lx-%08lx %s %08lx 00:00 0 %s\n", > + vma->vm_start, vma->vm_end, > + perms, > + vma->vm_pgoff << PAGE_SHIFT, > + special_area_name ? special_area_name : > " "); > + } > + } > + mas_unlock(&mas); > + // Release the read lock for mmap_lock > + up_read(&mm->mmap_lock); > + > + return 0; > +} > +EXPORT_SYMBOL(dump_memory_map); > > > Thanks, > JM