From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org,
Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>,
Jessica Yu <jeyu@kernel.org>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH 4.4 18/19] module: delay kobject uevent until after module init call
Date: Thu, 7 Jan 2021 15:16:43 +0100 [thread overview]
Message-ID: <20210107140828.429521522@linuxfoundation.org> (raw)
In-Reply-To: <20210107140827.584658199@linuxfoundation.org>
From: Jessica Yu <jeyu@kernel.org>
[ Upstream commit 38dc717e97153e46375ee21797aa54777e5498f3 ]
Apparently there has been a longstanding race between udev/systemd and
the module loader. Currently, the module loader sends a uevent right
after sysfs initialization, but before the module calls its init
function. However, some udev rules expect that the module has
initialized already upon receiving the uevent.
This race has been triggered recently (see link in references) in some
systemd mount unit files. For instance, the configfs module creates the
/sys/kernel/config mount point in its init function, however the module
loader issues the uevent before this happens. sys-kernel-config.mount
expects to be able to mount /sys/kernel/config upon receipt of the
module loading uevent, but if the configfs module has not called its
init function yet, then this directory will not exist and the mount unit
fails. A similar situation exists for sys-fs-fuse-connections.mount, as
the fuse sysfs mount point is created during the fuse module's init
function. If udev is faster than module initialization then the mount
unit would fail in a similar fashion.
To fix this race, delay the module KOBJ_ADD uevent until after the
module has finished calling its init routine.
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Tested-By: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Signed-off-by: Jessica Yu <jeyu@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/module.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1779,7 +1779,6 @@ static int mod_sysfs_init(struct module
if (err)
mod_kobject_put(mod);
- /* delay uevent until full sysfs population */
out:
return err;
}
@@ -1813,7 +1812,6 @@ static int mod_sysfs_setup(struct module
add_sect_attrs(mod, info);
add_notes_attrs(mod, info);
- kobject_uevent(&mod->mkobj.kobj, KOBJ_ADD);
return 0;
out_unreg_param:
@@ -3301,6 +3299,9 @@ static noinline int do_init_module(struc
blocking_notifier_call_chain(&module_notify_list,
MODULE_STATE_LIVE, mod);
+ /* Delay uevent until module has finished its init routine */
+ kobject_uevent(&mod->mkobj.kobj, KOBJ_ADD);
+
/*
* We need to finish all async code before the module init sequence
* is done. This has potential to deadlock. For example, a newly
next prev parent reply other threads:[~2021-01-07 14:20 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-07 14:16 [PATCH 4.4 00/19] 4.4.250-rc1 review Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 01/19] ALSA: hda/ca0132 - Fix work handling in delayed HP detection Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 02/19] ALSA: usb-audio: simplify set_sync_ep_implicit_fb_quirk Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 03/19] ALSA: usb-audio: fix sync-ep altsetting sanity check Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 04/19] ALSA: hda/realtek - Support Dell headset mode for ALC3271 Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 05/19] ALSA: hda - Fix a wrong FIXUP for alc289 on Dell machines Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 06/19] ALSA: hda/realtek - Dell headphone has noise on unmute for ALC236 Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 07/19] s390/dasd: fix hanging device offline processing Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 08/19] USB: serial: digi_acceleport: fix write-wakeup deadlocks Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 09/19] uapi: move constants from <linux/kernel.h> to <linux/const.h> Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 10/19] of: fix linker-section match-table corruption Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 11/19] reiserfs: add check for an invalid ih_entry_count Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 12/19] misc: vmw_vmci: fix kernel info-leak by initializing dbells in vmci_ctx_get_chkpt_doorbells() Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 13/19] media: gp8psk: initialize stats at power control logic Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 14/19] ALSA: seq: Use bool for snd_seq_queue internal flags Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 15/19] module: set MODULE_STATE_GOING state when a module fails to load Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 16/19] quota: Dont overflow quota file offsets Greg Kroah-Hartman
2021-01-07 14:16 ` [PATCH 4.4 17/19] powerpc: sysdev: add missing iounmap() on error in mpic_msgr_probe() Greg Kroah-Hartman
2021-01-07 14:16 ` Greg Kroah-Hartman [this message]
2021-01-07 14:16 ` [PATCH 4.4 19/19] iio:magnetometer:mag3110: Fix alignment and data leak issues Greg Kroah-Hartman
2021-01-08 1:13 ` [PATCH 4.4 00/19] 4.4.250-rc1 review Shuah Khan
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=20210107140828.429521522@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=jeyu@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nmoreychaisemartin@suse.com \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).