lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Thu, 13 Apr 2017 12:04:06 +0530
From:   Bhumika Goyal <bhumirks@...il.com>
To:     Takashi Sakamoto <o-takashi@...amocchi.jp>
Cc:     Julia Lawall <julia.lawall@...6.fr>, perex@...ex.cz,
        tiwai@...e.com, alsa-devel@...a-project.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH] ALSA: line6: constify snd_kcontrol_new structures

On Wed, Apr 12, 2017 at 7:15 PM, Takashi Sakamoto
<o-takashi@...amocchi.jp> wrote:
> 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@......};
>>
>> @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@...il.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@...amocchi.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.
>

Thanks for pointing it out. The  logic that I use currently for my
scripts doesn't take into account the arrays. I will extend the script
for arrays too.

Thanks,
Bhumika

> 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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ