public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: "Fabian Grünbichler" <f.gruenbichler@proxmox.com>
To: pve-devel@lists.proxmox.com, Stoiko Ivanov <s.ivanov@proxmox.com>
Subject: applied: [PATCH zfsonlinux] add patch kernel panic on cgroup-OOM kill
Date: Thu, 07 May 2026 10:44:16 +0200	[thread overview]
Message-ID: <1778143439.71thxxwf8r.astroid@yuna.none> (raw)
In-Reply-To: <20260428111513.1115719-1-s.ivanov@proxmox.com>

with patch re-numbered, thanks!

On April 28, 2026 1:14 pm, Stoiko Ivanov wrote:
> We had reports in our community forum of users running into this
> issue:
> https://forum.proxmox.com/threads/182885/
> https://forum.proxmox.com/threads/182232/
> 
> The patch was a clean cherry-pick from upstream's master-branch:
> https://github.com/openzfs/zfs/pull/18408
> 
> I managed to reproduce the panic with the reproducer from:
> https://github.com/openzfs/zfs/issues/15918#issuecomment-4180950007
> without this patch. After applying it running the reproducer 100 times
> in a loop did not cause the panic to occur.
> 
> Suggested-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
> Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
> ---
>  ...0018-Fix-kernel-BUG-at-mm-usercopy.c.patch | 62 +++++++++++++++++++
>  debian/patches/series                         |  1 +
>  2 files changed, 63 insertions(+)
>  create mode 100644 debian/patches/0018-Fix-kernel-BUG-at-mm-usercopy.c.patch
> 
> diff --git a/debian/patches/0018-Fix-kernel-BUG-at-mm-usercopy.c.patch b/debian/patches/0018-Fix-kernel-BUG-at-mm-usercopy.c.patch
> new file mode 100644
> index 000000000..2e074ee3e
> --- /dev/null
> +++ b/debian/patches/0018-Fix-kernel-BUG-at-mm-usercopy.c.patch
> @@ -0,0 +1,62 @@
> +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
> +From: Tony Hutter <hutter2@llnl.gov>
> +Date: Thu, 23 Apr 2026 10:52:19 -0700
> +Subject: [PATCH] Fix 'kernel BUG at mm/usercopy.c'
> +
> +Fix a bug where an cgroup-OOM-killed process can cause a panic:
> +
> +usercopy: Kernel memory exposure attempt detected from vmalloc (offset
> +1007584, size 217120)!
> +kernel BUG at mm/usercopy.c:102!
> +
> +This was caused by zfs_uiomove() not correctly returning EFAULT
> +for short copies.
> +
> +Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
> +Signed-off-by: Tony Hutter <hutter2@llnl.gov>
> +Closes #15918
> +Closes #18408
> +(cherry picked from commit fc6aa4369ef79bde105a359019575d9103541287)
> +Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
> +---
> + module/os/linux/zfs/zfs_uio.c | 13 ++++++++++---
> + 1 file changed, 10 insertions(+), 3 deletions(-)
> +
> +diff --git a/module/os/linux/zfs/zfs_uio.c b/module/os/linux/zfs/zfs_uio.c
> +index 8f9b161995f4e1d8cbbe457683879e0c343b2731..bfce9e6b52022f989f8108fdcfa4600278f0934d 100644
> +--- a/module/os/linux/zfs/zfs_uio.c
> ++++ b/module/os/linux/zfs/zfs_uio.c
> +@@ -234,6 +234,8 @@ zfs_uiomove_iter(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio,
> +     boolean_t revert)
> + {
> + 	size_t cnt = MIN(n, uio->uio_resid);
> ++	size_t oldcnt = cnt;
> ++	int error = 0;
> + 
> + 	if (rw == UIO_READ)
> + 		cnt = copy_to_iter(p, cnt, uio->uio_iter);
> +@@ -249,16 +251,21 @@ zfs_uiomove_iter(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio,
> + 		return (EFAULT);
> + 
> + 	/*
> +-	 * Revert advancing the uio_iter.  This is set by zfs_uiocopy()
> +-	 * to avoid consuming the uio and its iov_iter structure.
> ++	 * When revert is set this is a zfs_uiocopy() which should not
> ++	 * consume the uio and its iov_iter structure.  Otherwise, it's
> ++	 * a zfs_uiomove() which is expected to update the uio.  Partial
> ++	 * copies are allowed for both copy and move but EFAULT should
> ++	 * be returned for zfs_uiomove().
> + 	 */
> + 	if (revert)
> + 		iov_iter_revert(uio->uio_iter, cnt);
> ++	else if (cnt != oldcnt)
> ++		error = EFAULT;
> + 
> + 	uio->uio_resid -= cnt;
> + 	uio->uio_loffset += cnt;
> + 
> +-	return (0);
> ++	return (error);
> + }
> + 
> + int
> diff --git a/debian/patches/series b/debian/patches/series
> index a437c55e1..130039725 100644
> --- a/debian/patches/series
> +++ b/debian/patches/series
> @@ -15,3 +15,4 @@
>  0015-Linux-7.0-autoconf-Remove-copy-from-user-inatomic-AP.patch
>  0016-Linux-7.0-ensure-LSMs-get-to-process-mount-options.patch
>  0017-Linux-7.0-compat-META.patch
> +0018-Fix-kernel-BUG-at-mm-usercopy.c.patch
> -- 
> 2.47.3
> 
> 
> 
> 
> 
> 




      reply	other threads:[~2026-05-07  8:44 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-28 11:14 [PATCH zfsonlinux] add patch kernel panic on cgroup-OOM kill Stoiko Ivanov
2026-05-07  8:44 ` Fabian Grünbichler [this message]

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=1778143439.71thxxwf8r.astroid@yuna.none \
    --to=f.gruenbichler@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    --cc=s.ivanov@proxmox.com \
    /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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal