lkml.org 
[lkml]   [2017]   [Apr]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [PATCH] ALSA: line6: constify snd_kcontrol_new structures
    From
    Date
    Hi,

    On Apr 12 2017 22:10, Bhumika Goyal wrote:
    > Declare snd_kcontrol_new strcutures as const as they are only passed as
    > an argument to the function snd_ctl_new1. This argument is of type const,
    > so snd_kcontrol_new structures having this property can be made const too.
    > Done using Coccinelle:
    >
    > @r disable optional_qualifier@
    > identifier x;
    > position p;
    > @@
    > static struct snd_kcontrol_new x@p={...};
    >
    > @ok@
    > identifier r.x;
    > position p;
    > @@
    > snd_ctl_new1(&x@p,...)
    >
    > @bad@
    > position p != {r.p,ok.p};
    > identifier r.x;
    > @@
    > x@p
    >
    > @depends on !bad disable optional_qualifier@
    > identifier r.x;
    > @@
    > +const
    > struct snd_kcontrol_new x;
    >
    > Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
    > ---
    > sound/usb/line6/pod.c | 2 +-
    > sound/usb/line6/toneport.c | 4 ++--
    > 2 files changed, 3 insertions(+), 3 deletions(-)

    Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>

    I have interests in your way to detect this kind of issue, because below
    'struct snd_kcontrol_new' array seems not to be detected. I think
    there's a space to improve it.

    https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/tree/sound/usb/line6/pcm.c#n432

    432 /* control definition */
    433 static struct snd_kcontrol_new line6_controls[] = {
    434 {
    435 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,

    Later, I'll post for the above line.

    > diff --git a/sound/usb/line6/pod.c b/sound/usb/line6/pod.c
    > index 17aa616..358224c 100644
    > --- a/sound/usb/line6/pod.c
    > +++ b/sound/usb/line6/pod.c
    > @@ -380,7 +380,7 @@ static int snd_pod_control_monitor_put(struct snd_kcontrol *kcontrol,
    > }
    >
    > /* control definition */
    > -static struct snd_kcontrol_new pod_control_monitor = {
    > +static const struct snd_kcontrol_new pod_control_monitor = {
    > .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
    > .name = "Monitor Playback Volume",
    > .index = 0,
    > diff --git a/sound/usb/line6/toneport.c b/sound/usb/line6/toneport.c
    > index 8e22f43..ba7975c 100644
    > --- a/sound/usb/line6/toneport.c
    > +++ b/sound/usb/line6/toneport.c
    > @@ -250,7 +250,7 @@ static void toneport_start_pcm(unsigned long arg)
    > }
    >
    > /* control definition */
    > -static struct snd_kcontrol_new toneport_control_monitor = {
    > +static const struct snd_kcontrol_new toneport_control_monitor = {
    > .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
    > .name = "Monitor Playback Volume",
    > .index = 0,
    > @@ -261,7 +261,7 @@ static struct snd_kcontrol_new toneport_control_monitor = {
    > };
    >
    > /* source selector definition */
    > -static struct snd_kcontrol_new toneport_control_source = {
    > +static const struct snd_kcontrol_new toneport_control_source = {
    > .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
    > .name = "PCM Capture Source",
    > .index = 0,


    Regards

    Takashi Sakamoto

    \
     
     \ /
      Last update: 2017-04-12 15:55    [W:2.959 / U:0.592 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site