mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Josef Bacik <josef@toxicpanda.com>
To: Christian Brauner <brauner@kernel.org>
Cc: linux-fsdevel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Jann Horn <jannh@google.com>, Chris Mason <mason@kernel.org>,
	Jeff Layton <jlayton@kernel.org>, NeilBrown <neil@brown.name>,
	Eric Dumazet <edumazet@kernel.org>,
	Thomas Gleixner <tglx@kernel.org>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Jonathan Corbet <corbet@lwn.net>, Christoph Hellwig <hch@lst.de>,
	Greg Kroah-Hartman <gregkh@suse.de>,
	Joel Granados <joel.granados@kernel.org>,
	Kees Cook <kees@kernel.org>, Jan Kara <jack@suse.cz>,
	Jan Kara <jack@suse.com>,
	linux-kernel@vger.kernel.org, ntfs3@lists.linux.dev,
	linux-sound@vger.kernel.org, linux-mm@kvack.org,
	Chuck Lever <chuck.lever@oracle.com>,
	Takashi Iwai <tiwai@suse.de>
Subject: Re: [PATCH RFC 0/7] proc: move procfs to what kernfs does
Date: Wed, 04 Nov 2026 22:23:51 +0000	[thread overview]
Message-ID: <464ef986eab97abf226791c7e19ad111.josef@toxicpanda.com> (raw)
In-Reply-To: <20261102-defizit-jobaussicht-kurios-7016c6e67442@brauner>

Hey Christian,

This is a summary of my Claude review of everything.  It didn't find
anything wrong with the conversions in parts 3 to 6, the findings are in
part 1 and on the procfs side.  1-3 are reproduced in a VM, 4-6 are from
reading the code.

1) bugfixes 19/38 ("proc: resume readdir after the last name it
   returned")

proc_readdir_de() now returns 1 instead of 0 when there's nothing left
to emit:

	if (!de) {
		read_unlock(&proc_subdir_lock);
		return 1;
	}

proc_root_readdir() needs that to go on to the pids, but proc_readdir()
and proc_tgid_net_readdir() are also the ->iterate_shared() of every
other directory, and iterate_dir() hands the value to its caller.
getdents doesn't look at it, old_readdir() and the compat one do:

	error = iterate_dir(fd_file(f), &buf.ctx);
	if (buf.result)
		error = buf.result;

	return error;

So at the end of the directory readdir(2) returns 1 without having
written a dirent, and keeps doing that.  This is syscall 89 through
int $0x80 in a loop on x86_64 with IA32_EMULATION, giving up after
100000 calls:

	             base, 18/38         19/38, whole series
	/proc        106 entries, 0      106 entries, 0
	/proc/fs       4 entries, 0        4 entries, 1 from then on
	/proc/net     31 entries, 0       31 entries, 1 from then on
	/proc/sys     10 entries, 0       10 entries, 0

/proc/bus, driver, irq, tty and self/net do the same as /proc/fs.
glibc doesn't use that syscall, but this patch is tagged for stable.

proc_readdir() has to keep returning the 1 for proc_root_readdir(), so
I think proc_dir_operations and proc_net_operations want a wrapper that
turns it into 0.  The comment above proc_readdir_de() that says the VFS
doesn't care about the return value should go as well.

2) cleanup 5/5 ("proc: drop the _buf suffix from the new methods")

4/5 renames the old ->proc_read() so that "A module that sets one of
them doesn't build anymore".  5/5 hands the name to the new method, and
the old and the new prototype only differ in __user:

	ssize_t (*proc_read)(struct file *, char __user *, size_t, loff_t *);
	ssize_t (*proc_read)(struct file *, char *, size_t, loff_t *);

Only sparse sees that.  The compiler does reject an old ->proc_write()
or ->proc_ioctl() (gcc 13, clang 18), but this

	.proc_open	= foo_open,	/* single_open() */
	.proc_read	= seq_read,
	.proc_lseek	= seq_lseek,
	.proc_release	= single_release,

builds without a warning with W=1.  pde_set_flags() only refuses the
release helpers for seq_file entries, which this isn't one of, so it
registers too.  With a module that has exactly that loaded on top of the
series there's no warning, open() works and every read() fails with
-EFAULT.

The tree had 84 of those at your base.  None are left, but whatever is
in flight in other trees, gets backported or lives out of tree ends up
there without anybody noticing.  Either the read method keeps a name of
its own or pde_set_flags() refuses seq_read, and either way this
probably wants an entry in porting.rst.

3) bugfixes 38/38 ("selftests/proc: check that a faulting readlink()
   doesn't hold up removal")

This adds proc-remove-slow-reader to the Makefile and to .gitignore
along with proc-remove-slow-readlink, but proc-remove-slow-reader.c
only shows up in core 08/16.  From here up to core 07/16 make says

	make: *** No rule to make target '[...]/proc-remove-slow-reader'.  Stop.

in tools/testing/selftests/proc, so also with part 1 applied on its
own.  The two lines want to move to core 08/16.

4) core 04/16 ("proc: let procfs own the seq_file of seq_file entries")

pde_seq_start() returns right after it unpinned, pde_seq_next() goes on:

	v = pde->seq_ops->next(m, v, pos);
	if (v == ERR_PTR(-EIO))
		pde_seq_stop_pinned(m, v);
	/* seq_file would blame these seq_operations, blame the entry's */
	if (*pos == old) {
		pr_info_ratelimited("buggy .next function %ps did not update position index\n",
				    pde->seq_ops->next);
		++*pos;
	}
	return v;

core 16/16 documents that next() may return ERR_PTR(-EIO).  A next()
that does and leaves *pos alone is called buggy for it, and
pde->seq_ops is read after the unpin, when the module it points into
can be gone.  Nothing in the tree returns -EIO from next() today.  A
return v after pde_seq_stop_pinned() takes care of both.

5) bugfixes 35/38 ("proc: sysctl: don't hold the tables while readdir
   copies to userspace")

	while (err > 0) {
		if (!d.skip) {
			err = proc_sys_fill_dirent(file, &d);
			if (err)
				break;
	...
	sysctl_dir_done(&d);
	return 0;

sysctl_dir_next() only pins the memory, so the entry can be unregistered
before proc_sys_make_inode() looks at it and returns -ENOENT.  The loop
breaks without moving ctx->pos and returns 0.  If that was the first
entry of the getdents64() call userspace sees the end of the directory
and loses everything behind it.

The old code bailed out the same way, so it's not a regression, but
it's the "terminated early" case you set out to fix and these are the
lines that get rewritten.  Handling -ENOENT like d.skip would carry on
after that name.  -ENOMEM probably wants to be returned instead of
turning into EOF.

6) stable tags, bugfixes 34/38 and 37/38

34/38 has no Fixes: or stable tag and says "No functional changes", but
35/38 is tagged for stable and depends on it.  Without 34/38
proc_sys_make_inode() reads table->mode and calls ->set_ownership()
after it dropped sysctl_lock, and the caller 35/38 adds doesn't keep the
table registered.  35/38 applies cleanly without 34/38, so nothing will
complain if only the tagged one gets picked up.

37/38 has Fixes: 7e0e953bb0cf, which is 4.0.  "the inode holds a
reference to the entry" only covers RCU walk since 47458802f660
("procfs: move dropping pde and pid from ->evict_inode() to
->free_inode()"), which went into 6.8.  Before that the inode drops the
entry in ->evict_inode() without a grace period, and the pin is what
keeps ->data around for a walker that got it from ->get_link().  Which
stable trees have that commit isn't something I checked.

Smaller stuff:

- The cursors in bugfixes 19/38 and 31/38 hang off an open file and
  anybody can have as many as they have fds, so GFP_KERNEL_ACCOUNT.

- copy_to_user_fromio() has no callers left after drivers 22/23.

- fs 07/27 says ntfs_set_label() refused a label that's too long with
  -ENAMETOOLONG or -EFBIG.  It doesn't always, cpu_str.len is a u8 and
  ntfs_nls_to_utf16() is allowed (PATH_MAX - 2) / 2 here, so 300
  characters come out as 44 and pass the check.  That's an old ntfs3
  bug, it's only the sentence in the changelog.

Two more old ones that you might want in part 1, the series doesn't
change either of them:

- allocinfo can deadlock against a module load.
  codetag_alloc_module_section() calls reserve_module_tags() with
  mod_lock held for write, and its three error paths call
  shutdown_mem_profiling(true) -> remove_proc_entry("allocinfo"), which
  waits for the readers.  A reader that's pinned and in
  allocinfo_start() -> codetag_lock_module_list() sits in
  down_read(mod_lock).  There's no copy to userspace involved, so
  moving the copies out doesn't help this one.

- snd_info_text_entry_write() allocates the larger buffer and frees the
  old one without copying what's in it, so a text entry written in
  pieces loses the start once it crosses a page.  It's been like that
  since ffb73b08e794.

For what it's worth the end state checks out.  Every proc_ops
initializer in the tree matches the final struct, the only entries that
still read straight into userspace are kcore, kmsg, kpagecount,
kpageflags, kpagecgroup and profile, all built in and never removed, and
nothing in the tree trips the new checks in pde_set_flags().

This part is me. I have a selftest that my claude wrote to validate #1.
If you want I can send it along, but we should probably have a test for
that.

Thanks,
Josef

  parent reply	other threads:[~2026-11-04 22:23 UTC|newest]

Thread overview: 179+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-02 14:19 Christian Brauner
2026-11-02 14:21 ` [PATCH RFC 00/38] proc: fix a few old bugs in /proc handlers Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 01/38] PCI/proc: don't truncate the position of config space accesses Christian Brauner
2026-11-02 17:58     ` Linus Torvalds
2026-11-04  9:17       ` Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 02/38] PNP: isapnp: don't read past the end of the buffer on a large pread() Christian Brauner
2026-11-02 14:51     ` Rafael J. Wysocki (Intel)
2026-11-02 14:21   ` [PATCH RFC 03/38] netfilter: xt_recent: don't remove the proc entries under a spinlock Christian Brauner
2026-11-02 14:41     ` Florian Westphal
2026-11-04  9:15       ` Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 04/38] s390/dasd: don't look in front of the buffer on an empty write Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 05/38] platform/x86: toshiba_acpi: reject malformed brightness and fan writes Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 06/38] xtensa: simdisk: don't read the file name without the lock Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 07/38] powerpc/rtas_flash: don't read past the validate message Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 08/38] powerpc/rtasd: zero the error log buffer Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 09/38] ALSA: info: don't write past the end of a data entry Christian Brauner
2026-11-03 10:41     ` Takashi Iwai
2026-11-02 14:21   ` [PATCH RFC 10/38] scsi: BusLogic: don't return 0 from writes to the proc file Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 11/38] scsi: ips: " Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 12/38] wifi: libipw: don't return 0 from writes to debug_level Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 13/38] scsi: core: NUL-terminate what is written to the host proc files Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 14/38] um: NUL-terminate what is written to /proc/exitcode Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 15/38] ntfs3: don't warn when a huge label is written Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 16/38] proc: don't walk through a non-directory when resolving a name Christian Brauner
2026-11-05 11:41     ` Jan Kara
2026-11-02 14:21   ` [PATCH RFC 17/38] net: pktgen: reject device names with a '/' Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 18/38] proc: don't WARN about a name that is already registered Christian Brauner
2026-11-05 11:52     ` Jan Kara
2026-11-02 14:21   ` [PATCH RFC 19/38] proc: resume readdir after the last name it returned Christian Brauner
2026-11-05 12:00     ` Jan Kara
2026-11-02 14:21   ` [PATCH RFC 20/38] selftests/proc: check a /proc listing while entries come and go Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 21/38] proc: let proc_remove() remove the entry it was given Christian Brauner
2026-11-05 12:08     ` Jan Kara
2026-11-02 14:21   ` [PATCH RFC 22/38] proc: warn about entries left in /proc/net of a dying namespace Christian Brauner
2026-11-05 12:01     ` Jan Kara
2026-11-02 14:21   ` [PATCH RFC 23/38] proc: don't let NOMMU map procfs files Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 24/38] proc/vmcore: don't let vmcore_cleanup() run twice at once Christian Brauner
2026-11-05 12:11     ` Jan Kara
2026-11-02 14:21   ` [PATCH RFC 25/38] powerpc/crash_dump: check ioremap_cache() in copy_oldmem_page() Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 26/38] powerpc/crash_dump: recover from a machine check " Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 27/38] sunrpc: make queue_wait a global wait queue again Christian Brauner
2026-11-02 15:12     ` Chuck Lever
2026-11-03 16:26       ` Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 28/38] scsi: esas2r: bound the lengths of the HBA, SMP and firmware ioctls Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 29/38] powerpc/pseries: bound the lengths in the ofdt property parser Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 30/38] powerpc/pseries/lparcfg: return h_get_ppp()'s status as a long Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 31/38] proc: sysctl: resume readdir after the last name it returned Christian Brauner
2026-11-05 12:16     ` Jan Kara
2026-11-02 14:21   ` [PATCH RFC 32/38] selftests/proc: check a sysctl listing while entries come and go Christian Brauner
2026-11-02 14:21   ` [PATCH RFC 33/38] proc: sysctl: copy to and from userspace without holding the table Christian Brauner
2026-11-05 12:21     ` Jan Kara
2026-11-02 14:21   ` [PATCH RFC 34/38] proc: sysctl: look at the table under sysctl_lock when creating an inode Christian Brauner
2026-11-05 12:24     ` Jan Kara
2026-11-02 14:21   ` [PATCH RFC 35/38] proc: sysctl: don't hold the tables while readdir copies to userspace Christian Brauner
2026-11-05 12:55     ` Jan Kara
2026-11-02 14:43   ` [PATCH RFC 36/38] selftests/proc: check that faulting sysctl accesses don't hold up removal Christian Brauner
2026-11-02 14:43   ` [PATCH RFC 37/38] proc: don't pin a symlink's entry while readlink() copies it out Christian Brauner
2026-11-05 12:36     ` Jan Kara
2026-11-02 14:43   ` [PATCH RFC 38/38] selftests/proc: check that a faulting readlink() doesn't hold up removal Christian Brauner
2026-11-02 14:48 ` [PATCH RFC 00/16] proc: let procfs own the data path Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 01/16] proc: drop the compat file operations Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 02/16] proc: add pde_pin() and pde_unpin() Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 03/16] proc: make room for more entry flags Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 04/16] proc: let procfs own the seq_file of seq_file entries Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 05/16] proc: let procfs own the seq_file of proc_create_seq() and friends Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 06/16] proc: let procfs own the seq_file of DEFINE_PROC_SHOW_ATTRIBUTE() files Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 07/16] treewide: let procfs own the seq_file of simple proc entries Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 08/16] selftests/proc: check that a faulting reader doesn't hold up removal Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 09/16] seq_file: add seq_preallocate() Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 10/16] proc: let procfs own the seq_file of /proc/stat Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 11/16] proc: let procfs copy in writes before pinning the entry Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 12/16] proc: copy in writes to the network namespace entries before pinning Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 13/16] proc: let procfs copy out reads that don't go through seq_file Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 14/16] fs/proc/vmcore: let procfs copy out reads Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 15/16] proc: let procfs copy ioctl arguments in and out Christian Brauner
2026-11-02 14:48   ` [PATCH RFC 16/16] Documentation: seq_file: describe how a /proc file uses seq_file Christian Brauner
2026-11-02 15:01 ` [PATCH RFC 00/22] proc: convert the arch and platform entries Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 01/22] alpha: srm_env: let procfs copy in writes Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 02/22] ARM: alignment: " Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 03/22] ARM: atags: let procfs copy out reads of /proc/atags Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 04/22] m68k/bootinfo: let procfs copy out reads of /proc/bootinfo Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 05/22] powerpc/rtas: let procfs copy in writes Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 06/22] powerpc/rtas: let procfs copy out reads Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 07/22] powerpc/pseries: let procfs copy in writes Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 08/22] powerpc/procfs: let procfs copy out reads of /proc/powerpc/systemcfg Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 09/22] sh: alignment: let procfs copy in writes Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 10/22] sparc: led: " Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 11/22] um: " Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 12/22] x86/mtrr: let procfs own the seq_file of /proc/mtrr Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 13/22] x86/mtrr: let procfs copy in writes to /proc/mtrr Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 14/22] x86/mtrr: let procfs copy the ioctl arguments of /proc/mtrr Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 15/22] xtensa: simdisk: let procfs copy in writes Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 16/22] xtensa: simdisk: let procfs copy out reads Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 17/22] ACPI: proc: let procfs copy in writes to /proc/acpi/wakeup Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 18/22] macintosh/via-pmu: let procfs copy in writes to the options file Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 19/22] platform/x86: thinkpad_acpi: let procfs copy in writes Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 20/22] platform/x86: toshiba_acpi: " Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 21/22] PNP: pnpbios: " Christian Brauner
2026-11-02 15:01   ` [PATCH RFC 22/22] PNP: isapnp: let procfs copy out reads Christian Brauner
2026-11-02 15:07 ` [PATCH RFC 00/23] proc: convert the driver entries Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 01/23] nubus: let procfs own the seq_file of the resource files Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 02/23] zorro: let procfs copy out reads Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 03/23] PCI/proc: let procfs copy in config space writes Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 04/23] PCI/proc: let procfs copy out config space reads Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 05/23] PCI/proc: let procfs handle the ioctls Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 06/23] md: let procfs own the seq_file of /proc/mdstat Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 07/23] s390/dasd: let procfs copy in writes to /proc/dasd/statistics Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 08/23] s390/cio: let procfs copy in writes Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 09/23] scsi: let procfs own the seq_file of the host files Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 10/23] scsi: core: let procfs copy in writes Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 11/23] selftests/proc: check that a faulting writer doesn't hold up removal Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 12/23] scsi: sg: let procfs own the seq_file of allow_dio and def_reserved_size Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 13/23] scsi: sg: let procfs copy in writes Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 14/23] scsi: esas2r: let procfs copy the ioctl argument of the ATTONode file Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 15/23] hwmon: (dell-smm) let procfs copy the i8k ioctl arguments Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 16/23] fbdev: viafb: let procfs copy in writes Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 17/23] usb: gadget: function: rndis: " Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 18/23] wifi: ipw2x00: let procfs copy in writes to the debug level Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 19/23] tty: sysrq: let procfs copy in writes to /proc/sysrq-trigger Christian Brauner
2026-11-03  6:54     ` Jiri Slaby
2026-11-02 15:07   ` [PATCH RFC 20/23] ALSA: info: let procfs own the seq_file of text entries Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 21/23] ALSA: info: let procfs copy in writes Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 22/23] ALSA: info: let procfs copy out reads of data entries Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 23/23] ALSA: info: drop the ioctl hook " Christian Brauner
2026-11-02 15:07 ` [PATCH RFC 00/27] proc: convert the fs, kernel and mm entries Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 01/27] jbd2: let procfs own the seq_file of the info file Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 02/27] jfs: let procfs copy in writes to the loglevel file Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 03/27] lockd: let procfs copy in writes to nlm_end_grace Christian Brauner
2026-11-02 15:23     ` Chuck Lever
2026-11-02 15:07   ` [PATCH RFC 04/27] lockd: let procfs copy out reads of nlm_end_grace Christian Brauner
2026-11-02 15:24     ` Chuck Lever
2026-11-02 15:07   ` [PATCH RFC 05/27] nfsd: factor out setting up the exports seq_file Christian Brauner
2026-11-02 21:14     ` Chuck Lever
2026-11-02 15:07   ` [PATCH RFC 06/27] nfsd: let procfs own the seq_file of /proc/fs/nfs/exports Christian Brauner
2026-11-02 21:14     ` Chuck Lever
2026-11-02 15:07   ` [PATCH RFC 07/27] ntfs3: let procfs copy in writes to the label file Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 08/27] smb: client: let procfs own the seq_file of the smbdirect files Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 09/27] smb: client: let procfs copy in writes Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 10/27] genirq/proc: let procfs copy in the affinity masks Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 11/27] latencytop: let procfs copy in writes to /proc/latency_stats Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 12/27] locking/lockdep: let procfs own the seq_file of /proc/lock_stat Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 13/27] locking/lockdep: let procfs copy in writes to /proc/lock_stat Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 14/27] profiling: let procfs copy in writes to /proc/profile Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 15/27] profiling: mark /proc/profile permanent Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 16/27] sched/psi: let procfs own the seq_file of the pressure files Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 17/27] sched/psi: let procfs copy in trigger writes Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 18/27] sched/psi: mark the pressure files permanent Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 19/27] kallsyms: let procfs own the seq_file of /proc/kallsyms Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 20/27] module: procfs: let procfs own the seq_file of /proc/modules Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 21/27] dyndbg: let procfs copy in writes to /proc/dynamic_debug/control Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 22/27] ipc: let procfs own the seq_file of the sysvipc files Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 23/27] alloc_tag: let procfs own the seq_file of /proc/allocinfo Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 24/27] alloc_tag: let procfs copy the ioctl arguments " Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 25/27] mm/swapfile: let procfs own the seq_file of /proc/swaps Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 26/27] kernel/configs: let procfs copy out reads of /proc/config.gz Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 27/27] selftests/proc: check that unloading configs doesn't wait for a reader Christian Brauner
2026-11-02 15:07 ` [PATCH RFC 00/11] proc: convert the net entries and the kfifo samples Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 01/11] atm: let procfs copy out reads of the device files Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 02/11] l2tp: let procfs own the seq_file of /proc/net/pppol2tp Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 03/11] net: pktgen: let procfs copy in commands Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 04/11] netfilter: xt_recent: let procfs own the seq_file Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 05/11] netfilter: xt_recent: let procfs copy in writes Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 06/11] SUNRPC: let procfs own the seq_file of the cache content file Christian Brauner
2026-11-02 21:11     ` Chuck Lever
2026-11-02 15:07   ` [PATCH RFC 07/11] SUNRPC: let procfs copy in writes Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 08/11] SUNRPC: let procfs copy out reads Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 09/11] SUNRPC: drop the ioctl of the procfs channel files Christian Brauner
2026-11-02 21:11     ` Chuck Lever
2026-11-02 15:07   ` [PATCH RFC 10/11] samples/kfifo: let procfs copy in writes Christian Brauner
2026-11-02 15:07   ` [PATCH RFC 11/11] samples/kfifo: let procfs copy out reads Christian Brauner
2026-11-02 15:15 ` [PATCH RFC 0/5] proc: drop the __user methods Christian Brauner
2026-11-02 15:15   ` [PATCH RFC 1/5] proc: drop ->proc_write() Christian Brauner
2026-11-02 15:15   ` [PATCH RFC 2/5] proc: drop ->proc_ioctl() and ->proc_compat_ioctl() Christian Brauner
2026-11-02 15:15   ` [PATCH RFC 3/5] proc: only let permanent entries read straight into userspace Christian Brauner
2026-11-02 15:15   ` [PATCH RFC 4/5] proc: rename ->proc_read() and ->proc_read_iter() Christian Brauner
2026-11-02 15:15   ` [PATCH RFC 5/5] proc: drop the _buf suffix from the new methods Christian Brauner
2026-11-04 22:23 ` Josef Bacik [this message]
2026-11-05 10:28   ` [PATCH RFC 0/7] proc: move procfs to what kernfs does Christian Brauner
2026-11-05 11:12     ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=464ef986eab97abf226791c7e19ad111.josef@toxicpanda.com \
    --to=josef@toxicpanda.com \
    --cc=brauner@kernel.org \
    --cc=chuck.lever@oracle.com \
    --cc=corbet@lwn.net \
    --cc=edumazet@kernel.org \
    --cc=gregkh@suse.de \
    --cc=hch@lst.de \
    --cc=jack@suse.com \
    --cc=jack@suse.cz \
    --cc=jannh@google.com \
    --cc=jlayton@kernel.org \
    --cc=joel.granados@kernel.org \
    --cc=kees@kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=mason@kernel.org \
    --cc=neil@brown.name \
    --cc=ntfs3@lists.linux.dev \
    --cc=tglx@kernel.org \
    --cc=tiwai@suse.de \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®