Patch "memfd: improve userspace warnings for missing exec-related flags" has been added to the 6.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    memfd: improve userspace warnings for missing exec-related flags

to the 6.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     memfd-improve-userspace-warnings-for-missing-exec-re.patch
and it can be found in the queue-6.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 35718ef703016850af581ff1f074d67e38860ba0
Author: Aleksa Sarai <cyphar@xxxxxxxxxx>
Date:   Mon Aug 14 18:40:59 2023 +1000

    memfd: improve userspace warnings for missing exec-related flags
    
    [ Upstream commit 434ed3350f57c03a9654fe0619755cc137a58935 ]
    
    In order to incentivise userspace to switch to passing MFD_EXEC and
    MFD_NOEXEC_SEAL, we need to provide a warning on each attempt to call
    memfd_create() without the new flags.  pr_warn_once() is not useful
    because on most systems the one warning is burned up during the boot
    process (on my system, systemd does this within the first second of boot)
    and thus userspace will in practice never see the warnings to push them to
    switch to the new flags.
    
    The original patchset[1] used pr_warn_ratelimited(), however there were
    concerns about the degree of spam in the kernel log[2,3].  The resulting
    inability to detect every case was flagged as an issue at the time[4].
    
    While we could come up with an alternative rate-limiting scheme such as
    only outputting the message if vm.memfd_noexec has been modified, or only
    outputting the message once for a given task, these alternatives have
    downsides that don't make sense given how low-stakes a single kernel
    warning message is.  Switching to pr_info_ratelimited() instead should be
    fine -- it's possible some monitoring tool will be unhappy with a stream
    of warning-level messages but there's already plenty of info-level message
    spam in dmesg.
    
    [1]: https://lore.kernel.org/20221215001205.51969-4-jeffxu@xxxxxxxxxx/
    [2]: https://lore.kernel.org/202212161233.85C9783FB@keescook/
    [3]: https://lore.kernel.org/Y5yS8wCnuYGLHMj4@x1n/
    [4]: https://lore.kernel.org/f185bb42-b29c-977e-312e-3349eea15383@xxxxxxxxxxxxxxxxxxx/
    
    Link: https://lkml.kernel.org/r/20230814-memfd-vm-noexec-uapi-fixes-v2-3-7ff9e3e10ba6@xxxxxxxxxx
    Fixes: 105ff5339f49 ("mm/memfd: add MFD_NOEXEC_SEAL and MFD_EXEC")
    Signed-off-by: Aleksa Sarai <cyphar@xxxxxxxxxx>
    Cc: Christian Brauner <brauner@xxxxxxxxxx>
    Cc: Daniel Verkamp <dverkamp@xxxxxxxxxxxx>
    Cc: Dominique Martinet <asmadeus@xxxxxxxxxxxxx>
    Cc: Kees Cook <keescook@xxxxxxxxxxxx>
    Cc: Shuah Khan <shuah@xxxxxxxxxx>
    Cc: <stable@xxxxxxxxxxxxxxx>
    Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/mm/memfd.c b/mm/memfd.c
index d65485c762def..aa46521057ab1 100644
--- a/mm/memfd.c
+++ b/mm/memfd.c
@@ -315,7 +315,7 @@ SYSCALL_DEFINE2(memfd_create,
 		return -EINVAL;
 
 	if (!(flags & (MFD_EXEC | MFD_NOEXEC_SEAL))) {
-		pr_warn_once(
+		pr_info_ratelimited(
 			"%s[%d]: memfd_create() called without MFD_EXEC or MFD_NOEXEC_SEAL set\n",
 			current->comm, task_pid_nr(current));
 	}



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux