]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
proc: proc_maps_open allow proc_mem_open to return NULL
authorJialin Wang <wjl.linux@gmail.com>
Thu, 7 Aug 2025 16:54:55 +0000 (00:54 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 12 Aug 2025 06:01:00 +0000 (23:01 -0700)
The commit 65c66047259f ("proc: fix the issue of proc_mem_open returning
NULL") caused proc_maps_open() to return -ESRCH when proc_mem_open()
returns NULL.  This breaks legitimate /proc/<pid>/maps access for kernel
threads since kernel threads have NULL mm_struct.

The regression causes perf to fail and exit when profiling a kernel
thread:

  # perf record -v -g -p $(pgrep kswapd0)
  ...
  couldn't open /proc/65/task/65/maps

This patch partially reverts the commit to fix it.

Link: https://lkml.kernel.org/r/20250807165455.73656-1-wjl.linux@gmail.com
Fixes: 65c66047259f ("proc: fix the issue of proc_mem_open returning NULL")
Signed-off-by: Jialin Wang <wjl.linux@gmail.com>
Cc: Penglei Jiang <superman.xpt@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/proc/task_mmu.c

index ee1e4ccd33bd6f4b2d5687e7122958b11aba1800..29cca0e6d0ff5a96c4c078400269e3ca05258650 100644 (file)
@@ -340,8 +340,8 @@ static int proc_maps_open(struct inode *inode, struct file *file,
 
        priv->inode = inode;
        priv->mm = proc_mem_open(inode, PTRACE_MODE_READ);
-       if (IS_ERR_OR_NULL(priv->mm)) {
-               int err = priv->mm ? PTR_ERR(priv->mm) : -ESRCH;
+       if (IS_ERR(priv->mm)) {
+               int err = PTR_ERR(priv->mm);
 
                seq_release_private(inode, file);
                return err;