Re: [PATCH 2/2] module: add support to avoid duplicates early on load

From: Rudi Heitbaum
Date: Sun Jun 04 2023 - 10:26:34 EST


On Mon, May 29, 2023 at 09:55:15PM -0400, Linus Torvalds wrote:
> On Mon, May 29, 2023 at 11:18 AM Johan Hovold <johan@xxxxxxxxxx> wrote:
> >
> > I took a closer look at some of the modules that failed to load and
> > noticed a pattern in that they have dependencies that are needed by more
> > than one device.
>
> Ok, this is a "maybe something like this" RFC series of two patches -
> one trivial one to re-organize things a bit so that we can then do the
> real one which uses a filter based on the inode pointer to return an
> "idempotent return value" for module loads that share the same inode.
>
> It's entirely untested, and since I'm on the road I'm going to not
> really be able to test it. It compiles for me, and the code looks
> fairly straightforward, but it's probably buggy.

The updated patches fix the issue experienced with 6.4-rc4 where the Intel
NUC12 booted fine, but on media playback resulted in the video stuttering,
then freezing - and that audio was not coming though.

# diff modules-rc4 modules-rc4-patched
< snd_hda_codec_hdmi 77824 0
< snd_hda_codec_realtek 159744 0
---
> snd_hda_codec_hdmi 77824 1
> snd_hda_codec_realtek 159744 1

Revert "module: error out early on concurrent load of the same module file"
module: split up 'finit_module()' into init_module_from_file() helper
modules: catch concurrent module loads, take two
Johan's fix:
-static struct spinlock idem_lock;
+static DEFINE_SPINLOCK(idem_lock);

Tested-by: Rudi Heitbaum <rudi@xxxxxxxxxxxxx>