Re: [alsa-devel] ALSA: timer: Handle disconnection more safely
Hello Takashi Iwai,
This is a semi-automatic email about new static checker warnings.
The patch 230323dac060: "ALSA: timer: Handle disconnection more safely" from Jan 21, 2016, leads to the following Smatch complaint:
sound/core/timer.c:1091 snd_timer_proc_read() error: we previously assumed 'timer->card' could be null (see line 1084)
sound/core/timer.c 1083 list_for_each_entry(timer, &snd_timer_list, device_list) { 1084 if (timer->card && timer->card->shutdown) ^^^^^^^^^^^ New test.
1085 continue; 1086 switch (timer->tmr_class) { 1087 case SNDRV_TIMER_CLASS_GLOBAL: 1088 snd_iprintf(buffer, "G%i: ", timer->tmr_device); 1089 break; 1090 case SNDRV_TIMER_CLASS_CARD: 1091 snd_iprintf(buffer, "C%i-%i: ", 1092 timer->card->number, timer->tmr_device); ^^^^^^^^^^^^^^^^^^^ Old untested dereference. But maybe SNDRV_TIMER_CLASS_CARD implies non-NULL?
1093 break;
regards, dan carpenter
On Fri, 22 Jan 2016 20:52:48 +0100, Dan Carpenter wrote:
Hello Takashi Iwai,
This is a semi-automatic email about new static checker warnings.
The patch 230323dac060: "ALSA: timer: Handle disconnection more safely" from Jan 21, 2016, leads to the following Smatch complaint:
sound/core/timer.c:1091 snd_timer_proc_read() error: we previously assumed 'timer->card' could be null (see line 1084)
sound/core/timer.c 1083 list_for_each_entry(timer, &snd_timer_list, device_list) { 1084 if (timer->card && timer->card->shutdown) ^^^^^^^^^^^ New test.
This checks for all timer classes including the one that doesn't have card object assigned.
1085 continue; 1086 switch (timer->tmr_class) { 1087 case SNDRV_TIMER_CLASS_GLOBAL: 1088 snd_iprintf(buffer, "G%i: ", timer->tmr_device); 1089 break; 1090 case SNDRV_TIMER_CLASS_CARD: 1091 snd_iprintf(buffer, "C%i-%i: ", 1092 timer->card->number, timer->tmr_device); ^^^^^^^^^^^^^^^^^^^ Old untested dereference. But maybe SNDRV_TIMER_CLASS_CARD implies non-NULL?
Yes. So the current code is correct.
Takashi
participants (2)
-
Dan Carpenter
-
Takashi Iwai