1. 22 May, 2024 2 commits
    • Takashi Iwai's avatar
      ALSA: core: Enable proc module when CONFIG_MODULES=y · c1a8d5f3
      Takashi Iwai authored
      We used '#ifdef MODULE' for judging whether the system supports the
      sound module or not, and /proc/asound/modules is created only when
      '#ifdef MODULE' is true.  The check is not really appropriate, though,
      because the flag means only for the sound core and the drivers are
      still allowed to be built as modules even if 'MODULE' is not set in
      sound/core/init.c.
      
      For fixing the inconsistency, replace those ifdefs with 'ifdef
      CONFIG_MODULES'.  One place for a NULL module check is rewritten with
      IS_MODULE(CONFIG_SND) to be more intuitive.  It can't be changed to
      CONFIG_MODULES; otherwise it would hit a WARN_ON() incorrectly.
      
      This is a slight behavior change; the modules proc entry appears now
      no matter whether the sound core is built-in or not as long as modules
      are enabled on the kernel in general.  This can't be avoided due to
      the nature of kernel builds.
      
      Link: https://lore.kernel.org/r/20240520170349.2417900-1-xu.yang_2@nxp.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Tested-by: default avatarXu Yang <xu.yang_2@nxp.com>
      Link: https://lore.kernel.org/r/20240522070442.17786-2-tiwai@suse.de
      c1a8d5f3
    • Takashi Iwai's avatar
      ALSA: core: Fix NULL module pointer assignment at card init · 39381fe7
      Takashi Iwai authored
      The commit 81033c6b ("ALSA: core: Warn on empty module")
      introduced a WARN_ON() for a NULL module pointer passed at snd_card
      object creation, and it also wraps the code around it with '#ifdef
      MODULE'.  This works in most cases, but the devils are always in
      details.  "MODULE" is defined when the target code (i.e. the sound
      core) is built as a module; but this doesn't mean that the caller is
      also built-in or not.  Namely, when only the sound core is built-in
      (CONFIG_SND=y) while the driver is a module (CONFIG_SND_USB_AUDIO=m),
      the passed module pointer is ignored even if it's non-NULL, and
      card->module remains as NULL.  This would result in the missing module
      reference up/down at the device open/close, leading to a race with the
      code execution after the module removal.
      
      For addressing the bug, move the assignment of card->module again out
      of ifdef.  The WARN_ON() is still wrapped with ifdef because the
      module can be really NULL when all sound drivers are built-in.
      
      Note that we keep 'ifdef MODULE' for WARN_ON(), otherwise it would
      lead to a false-positive NULL module check.  Admittedly it won't catch
      perfectly, i.e. no check is performed when CONFIG_SND=y.  But, it's no
      real problem as it's only for debugging, and the condition is pretty
      rare.
      
      Fixes: 81033c6b ("ALSA: core: Warn on empty module")
      Reported-by: default avatarXu Yang <xu.yang_2@nxp.com>
      Closes: https://lore.kernel.org/r/20240520170349.2417900-1-xu.yang_2@nxp.com
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Tested-by: default avatarXu Yang <xu.yang_2@nxp.com>
      Link: https://lore.kernel.org/r/20240522070442.17786-1-tiwai@suse.de
      39381fe7
  2. 21 May, 2024 1 commit
  3. 16 May, 2024 3 commits
  4. 13 May, 2024 4 commits
  5. 12 May, 2024 2 commits
  6. 10 May, 2024 27 commits
  7. 09 May, 2024 1 commit