Commit c0e1b774 authored by Jialin Wang's avatar Jialin Wang Committed by Andrew Morton
Browse files

proc: proc_maps_open allow proc_mem_open to return NULL

The commit 65c66047 ("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: 65c66047 ("proc: fix the issue of proc_mem_open returning NULL")
Signed-off-by: default avatarJialin Wang <wjl.linux@gmail.com>
Cc: Penglei Jiang <superman.xpt@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 0b5be138
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;