Re: [PATCH] ALSA: line6: constify snd_kcontrol_new structures

From: Takashi Sakamoto
Date: Wed Apr 12 2017 - 09:54:42 EST


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@xxxxxxxxx>
---
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@xxxxxxxxxxxxx>

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