• Shuah Khan's avatar
    media: Fix Media Controller API config checks · 50e7a31d
    Shuah Khan authored
    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: default avatarDan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
    50e7a31d
media-dev-allocator.h 2.21 KB