* + profile-account-for-partial-proc-profile-reads.patch added to mm-nonmm-unstable branch
@ 2026-10-21 0:47 Andrew Morton
0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2026-10-21 0:47 UTC (permalink / raw)
To: mm-commits, thnkslprpt, brads, akpm
The patch titled
Subject: profile: account for partial /proc/profile reads
has been added to the -mm mm-nonmm-unstable branch. Its filename is
profile-account-for-partial-proc-profile-reads.patch
This patch will shortly appear at
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/profile-account-for-partial-proc-profile-reads.patch
This patch will later appear in the mm-nonmm-unstable branch at
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next via various
branches at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
and is updated there most days
------------------------------------------------------
From: Andrew Morton <akpm@linux-foundation.org>
Subject: profile: account for partial /proc/profile reads
Date: Tue, 20 Oct 2026 15:28:00 -0700
read_profile() returns -EFAULT without advancing the file position
when a user copy faults, even if earlier header bytes or a prefix of
the counters were successfully copied. A retry can therefore copy
the same bytes again despite the previous read having delivered data.
Return the number of successfully copied bytes and advance *ppos by
that amount. Return -EFAULT only if the fault occurs before any bytes
are copied. Preserve the four-byte sampling-step header, raw counter
representation, and normal successful-read behavior.
Avi Weiss's "profiling: fix sampling step on 64-bit big-endian
systems" is unchanged. This patch changes only short-read and
fault reporting, not the output format.
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Avi Weiss <thnkslprpt@gmail.com>
Cc: Bradley Morgan <brads@mainlining.org>
---
Tested the combined three-patch series on x86-64 QEMU/KVM with
CONFIG_PROFILING=y, CONFIG_PROC_FS=y and profile=12.
profile-read-test.c: PASS (0 failures). Covered header decoding,
short and boundary reads, EOF, partial user-copy faults, return
values and file-position accounting.
The 64-bit big-endian fix was not runtime tested. There was no
individual-patch or unpatched-versus-patched runtime comparison.
kernel/profile.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
--- a/kernel/profile.c~profile-account-for-partial-proc-profile-reads
+++ a/kernel/profile.c
@@ -157,6 +157,7 @@ read_profile(struct file *file, char __u
ssize_t read;
char *pnt;
unsigned int sample_step = (unsigned int)(1UL << prof_shift);
+ size_t not_copied;
if (p >= (prof_len+1)*sizeof(unsigned int))
return 0;
@@ -166,15 +167,21 @@ read_profile(struct file *file, char __u
while (p < sizeof(unsigned int) && count > 0) {
if (put_user(*((char *)(&sample_step)+p), buf))
- return -EFAULT;
+ goto out;
buf++; p++; count--; read++;
}
- pnt = (char *)prof_buffer + p - sizeof(atomic_t);
- if (copy_to_user(buf, (void *)pnt, count))
- return -EFAULT;
- read += count;
+ if (count) {
+ pnt = (char *)prof_buffer + p - sizeof(atomic_t);
+ not_copied = copy_to_user(buf, pnt, count);
+ read += count - not_copied;
+ if (not_copied)
+ goto out;
+ }
*ppos += read;
return read;
+out:
+ *ppos += read;
+ return read ? read : -EFAULT;
}
/* default is to not implement this call */
_
Patches currently in -mm which might be from akpm@linux-foundation.org are
mm-damon-core-introduce-damos_quota_goal-complement-fix.patch
fs-proc-task_mmu-pin-mm_users-in-do_pagemap_scan-fix.patch
lib-cmdline-fix-get_options-count-and-overflow-with-large-ranges-fix.patch
fat-roll-back-the-new-entry-when-create-mkdir-fails-to-build-the-inode-fix.patch
drivers-media-v4l2-core-v4l2-vp9c-reduce-inlining.patch
profile-account-for-partial-proc-profile-reads.patch
profile-simplify-proc-profile-read-layout.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-21 0:47 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-21 0:47 + profile-account-for-partial-proc-profile-reads.patch added to mm-nonmm-unstable branch Andrew Morton
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.