lkml.org 
[lkml]   [2021]   [Jul]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.12 80/80] media: Fix Media Controller API config checks
    Date
    From: Shuah Khan <skhan@linuxfoundation.org>

    [ Upstream commit 50e7a31d30e8221632675abed3be306382324ca2 ]

    Smatch static checker warns that "mdev" can be null:

    sound/usb/media.c:287 snd_media_device_create()
    warn: 'mdev' can also be NULL

    If CONFIG_MEDIA_CONTROLLER is disabled, this file should not be included
    in the build.

    The below conditions in the sound/usb/Makefile are in place to ensure that
    media.c isn't included in the build.

    sound/usb/Makefile:
    snd-usb-audio-$(CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER) += media.o

    select SND_USB_AUDIO_USE_MEDIA_CONTROLLER if MEDIA_CONTROLLER &&
    (MEDIA_SUPPORT=y || MEDIA_SUPPORT=SND_USB_AUDIO)

    The following config check in include/media/media-dev-allocator.h is
    in place to enable the API only when CONFIG_MEDIA_CONTROLLER and
    CONFIG_USB are enabled.

    #if defined(CONFIG_MEDIA_CONTROLLER) && defined(CONFIG_USB)

    This check doesn't work as intended when CONFIG_USB=m. When CONFIG_USB=m,
    CONFIG_USB_MODULE is defined and CONFIG_USB is not. The above config check
    doesn't catch that CONFIG_USB is defined as a module and disables the API.
    This results in sound/usb enabling Media Controller specific ALSA driver
    code, while Media disables the Media Controller API.

    Fix the problem requires two changes:

    1. Change the check to use IS_ENABLED to detect when CONFIG_USB is enabled
    as a module or static. Since CONFIG_MEDIA_CONTROLLER is a bool, leave
    the check unchanged to be consistent with drivers/media/Makefile.

    2. Change the drivers/media/mc/Makefile to include mc-dev-allocator.o
    in mc-objs when CONFIG_USB is enabled.

    Link: https://lore.kernel.org/alsa-devel/YLeAvT+R22FQ%2FEyw@mwanda/

    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/media/mc/Makefile | 2 +-
    include/media/media-dev-allocator.h | 2 +-
    2 files changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/media/mc/Makefile b/drivers/media/mc/Makefile
    index 119037f0e686..2b7af42ba59c 100644
    --- a/drivers/media/mc/Makefile
    +++ b/drivers/media/mc/Makefile
    @@ -3,7 +3,7 @@
    mc-objs := mc-device.o mc-devnode.o mc-entity.o \
    mc-request.o

    -ifeq ($(CONFIG_USB),y)
    +ifneq ($(CONFIG_USB),)
    mc-objs += mc-dev-allocator.o
    endif

    diff --git a/include/media/media-dev-allocator.h b/include/media/media-dev-allocator.h
    index b35ea6062596..2ab54d426c64 100644
    --- a/include/media/media-dev-allocator.h
    +++ b/include/media/media-dev-allocator.h
    @@ -19,7 +19,7 @@

    struct usb_device;

    -#if defined(CONFIG_MEDIA_CONTROLLER) && defined(CONFIG_USB)
    +#if defined(CONFIG_MEDIA_CONTROLLER) && IS_ENABLED(CONFIG_USB)
    /**
    * media_device_usb_allocate() - Allocate and return struct &media device
    *
    --
    2.30.2
    \
     
     \ /
      Last update: 2021-07-05 01:11    [W:4.086 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site