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 DD3BEC27C4F for ; Sat, 29 Jun 2024 03:42:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0D07E6B0088; Fri, 28 Jun 2024 23:42:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 07F2E6B0089; Fri, 28 Jun 2024 23:42:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E62176B008A; Fri, 28 Jun 2024 23:42:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id C9FE96B0088 for ; Fri, 28 Jun 2024 23:42:02 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 53128A26A3 for ; Sat, 29 Jun 2024 03:42:02 +0000 (UTC) X-FDA: 82282527684.16.05159EB Received: from mail-oo1-f46.google.com (mail-oo1-f46.google.com [209.85.161.46]) by imf30.hostedemail.com (Postfix) with ESMTP id 70CA780017 for ; Sat, 29 Jun 2024 03:42:00 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fQ0z3DGK; spf=pass (imf30.hostedemail.com: domain of schmitzmic@gmail.com designates 209.85.161.46 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=1719632511; 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=YBLSANnlMJVSSdpHwO7eKO9moXDMiFwLdQyag1HDNp4=; b=JXvJUfle4UowihGMUs7LkMIt/mR5bdteS3h1jxRZ9/KOKp4Vj7avUWY84Ycgx8Y9Ek/+q8 eX1QTQTpSMhRG+hKuNOzBoht7WgUpnKMjWqHsTS4jemgTVdVG0iCrw5Wwijp8L6xA6gXVc yY8or+4+06VVZfWkEiE6dEFb1Wd5h7g= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fQ0z3DGK; spf=pass (imf30.hostedemail.com: domain of schmitzmic@gmail.com designates 209.85.161.46 as permitted sender) smtp.mailfrom=schmitzmic@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719632511; a=rsa-sha256; cv=none; b=nYtMgIGta4zO65c/NRisBLy4Uc+WrUt7onAS+idBv2EUkpx1rZnlswonQy589qvJLoOScm cjWWv+XDcHYnOFbZYlZotc5cc9wg9BQSW+xXfT6Et/pGD+bO1NIeLWYhJeKzpgvYys6OI/ PD0bgaoZ91sIDXLhRtGJrWKKBsQAb2k= Received: by mail-oo1-f46.google.com with SMTP id 006d021491bc7-5b9778bb7c8so637112eaf.3 for ; Fri, 28 Jun 2024 20:42:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719632519; x=1720237319; 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=YBLSANnlMJVSSdpHwO7eKO9moXDMiFwLdQyag1HDNp4=; b=fQ0z3DGKfz5ENLq4JB2vDm4acaSDASPsii58okdvupLjCKnfkyn7pJtjE2Eh0xe0Yc rkDyUMqb6mNfVBDAbvyAlrWTAl1aglVPWl2L/KVt+LGdme/5g8apQ/knN6l5N013sbkA ajwz2QNb966PXl5+j5TstW26gJwJrR0I0suHp2IE5ycRhT8capuO4rW22g7lkbRDFfnr B8/YkyBLTcQpu+UPN/zbZ9gZvBfx2CY2BjE4qbr/KgHZANL+tE2so0vExbjETVM8DHEJ ed5yU8bY1mbA65hQhqIhdXKbUAhbSorBdLv677YMRQdcChd3fwYjH34J7AZuali3DuYP 73Cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719632519; x=1720237319; 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=YBLSANnlMJVSSdpHwO7eKO9moXDMiFwLdQyag1HDNp4=; b=Hj+gK1fVFFBqaLqrSZNNrkTPGTUfBRIvRwqM314DngtwZ+cI1oGPNplk5+ssjnpv3v Lgn8zKptfJChiL9+e3idJ4ESnQXWkSllmn8SJuM+gOi5XK8ZLvqBNmaFIxRSWhUzgIIC YbY49v9Sq/SmbdJlwWQauJxxdRMFXh6sVOOYqc+30ILD44B+2hPa6dMoCBq/fe8KB582 7CqMalfjX55vq6siWxRObaQlKiJLFyLQsveBktWkqdWt0CDy9CaAHGOIyQXU3XfjUHUj MCRkfyKqkqtmouuKnEfjllNXQXKshB0doZLJjjJRAdwoSvPKOzevJK7xsKjS6kBVj5Oa fxuA== X-Forwarded-Encrypted: i=1; AJvYcCWPKgMsnBc0ngfKLcTkqBR/yFzM9s105sNRt+CGcTlsDBa6/dJaQaF9rV7KI+Te3jqVrMqpixob27dvS6KPZIKzyi0= X-Gm-Message-State: AOJu0Yx0oSOMmPy4CtncntH0aK9XKJ9H4slmvp9itwwMB5Doo8Jv2BPv IydFNvpPkks0blVJuOroWSpeLjP2i3mk+N+t2+rNA+1TcmnT5n/I X-Google-Smtp-Source: AGHT+IHopYJuR1eIbvKyZyMp4Pcz7PLjz7OJmzdAbGSrM508Owph07yiysxV1DgPe+KdYHvAIxsoaA== X-Received: by 2002:a05:6358:7254:b0:1a2:dfc3:4200 with SMTP id e5c5f4694b2df-1a6acf79842mr13830855d.24.1719632519293; Fri, 28 Jun 2024 20:41:59 -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 98e67ed59e1d1-2c91d3e776esm2401923a91.50.2024.06.28.20.41.53 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 28 Jun 2024 20:41:58 -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> <64c30829-499d-fb48-16ee-891f8d8c443a@gmail.com> <04ffd421-28e8-4bde-b44b-e3685bed99fc@yoseli.org> Cc: Greg Ungerer , Geert Uytterhoeven , Christoph Hellwig , wbx@openadk.org From: Michael Schmitz Message-ID: <8ba7fa44-876e-5f7b-70c8-e8a5499db2a4@gmail.com> Date: Sat, 29 Jun 2024 15:41:50 +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: <04ffd421-28e8-4bde-b44b-e3685bed99fc@yoseli.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 70CA780017 X-Stat-Signature: 5wx67feedguxh5seuhkqrdy5nhr63wmc X-HE-Tag: 1719632520-164112 X-HE-Meta: U2FsdGVkX19pZUv4Wp98o/eocM/GStzJZyZurZEzUxnKP/y6niA/kOhlQfnA5F9nL+Ov8Cvplyvo+nYzU36zk/zwJ8DRO797AhbadVLextIuiW7hmdoGrVqETErRCwSr1g/Ki5OWbl+t2fAopd7IUlTYt7McAfanb3IsA19nX1FA45E/asGQFdWW3inrYlqOuOLSRgl/R65A9vOfcWIcNPL6FqchSQDmXo6t0qfEdzJjC4P6M8irBcZmsJpq7QRAcJby48lMplMaYCsY1+vbG6p/FONmtdpzGPm6GpBoFOm8ERMyFMqxOO1rF2WE53v0W+KLETvr7DvIe2JFIhQA+kL47tuaxweh3hM0p4MHYckCd71432mnGgGNXw0iHIByk2bu3vuVslbcNtOFlaXkz5jioK7HDOvWHMrmRYzR5Y9LaUgGfvoVXPeVebNJgIPZ5L1zgFbTy4nUZE4k6iJj53BbXBHz5gNU6WYwYIMc5GFy9YSTqt4K91OSbMz5bkL9i6M97og2j/RM7Y/Xq89telozL3QBT92K4m3Dcxvh5EwymrTcremJ3CBBmvZHXGIElbBLITiMAdg1lqi7i/bHOP26e5KMXlAuIqDosBwML2jXtYb7f7O41FpTukXczvWa+Q+M+UFNweKfZPXwigKKiySR0Llfh7VCU50i1t0gJmuuQSTw3Od3nuw5fEiqCcRNv/9WWovZCVkV7x6VsCsNm1E2t8GYlFuCKg9WGkTxEl15V+BcMFLc8SpNRDwDX3vYGAoxXR+qz1SvXY00KUdM5zSOvEWlVcpF62+FhHOxYKfXlMS5R0uVdI0gtTHGYRF2DPVl0bg2fyc4Pb5hOtWNizVYrDYup6FRpiTq/M6p5huQVAUovt9BR0sugEL/MfNG56iz1eba/MA4LwAs1907qlzIXvJ7Ur9FhlW04zyUKQ+BW5UmoXxIbyWta/60LYDCDpbZMMNbUbKh1fqrv0a BIKt0c4P Rvq6WMOKP/pfirJBdMqnMXbg9bTlyGLi9+68QwBy+ZvbT3MZgGjW8lO9EPdIhONiLXms0/vrZUMNGDLVTD77EQv9z5W+/aWRpTMugY8ZinIhzItVX4CSNtlNB6TXilulIkmSmegvSSXO/4Alytt5Fz4L7Qdh0gZhjjlQNuP/i/I9z/epSpMCbT3HjQBiOshJ+mTTplzDV0cOw3CXlRNhEEvPMCuVRy1MJuBwVfSW1GDTTglrLLXSc0GJYsDgmabtruWNigrA2lxgMEK1zEzdCU+HseLQ89JrKN57xTOa/au90xBUaBH/UT7zqPmn4p4z8oBP2xfwBCSKd6t/VRaDU2X8SCg== 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 23:25 schrieb Jean-Michel Hautbois: >> >> 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? >> > > I did the test, and called ls twice to see what differs: > bash-5.2# ls -l > /dev/null > load_elf_binary: Dump memory for ls (31): > mmap: start_brk: 700ca000, brk: 700ca000 > 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: bfa48000-bfa6a000 rw-p bffde000 00:00 0 [stack] > do_exit: Dump memory for ls (31): > mmap: start_brk: 700ca000, brk: 700ec000 ls managed to allocate heap space OK ... > 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: bfa48000-bfa6a000 rw-p bffde000 00:00 0 [stack] > bash-5.2# ls -l > /dev/null > load_elf_binary: Dump memory for ls (33): > mmap: start_brk: 700ca000, brk: 700ca000 > 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: bf894000-bf8b6000 rw-p bffde000 00:00 0 [stack] > do_exit: Dump memory for ls (33): > mmap: start_brk: 700ca000, brk: 700ca000 No heap space allocated here. I would have expected that to cause an error message from libc ... Can you print a brief meminfo summary such as found in fs/proc/meminfo.c (total, free, available, buffer and cached for starters)? Cheers, Michael > 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: bf894000-bf8b6000 rw-p bffde000 00:00 0 [stack] > > The second time, there seems to be no heap... > > JM > >> 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