2024-02-13 10:14:19

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH] ALSA: aw2: avoid casting function pointers

From: Arnd Bergmann <[email protected]>

clang-16 started warning about incompatible function pointers here:

sound/pci/aw2/aw2-alsa.c:363:11: error: cast from 'void (*)(struct snd_pcm_substream *)' to 'snd_aw2_saa7146_it_cb' (aka 'void (*)(void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
363 | (snd_aw2_saa7146_it_cb)
| ^~~~~~~~~~~~~~~~~~~~~~~
364 | snd_pcm_period_elapsed,
| ~~~~~~~~~~~~~~~~~~~~~~
sound/pci/aw2/aw2-alsa.c:392:10: error: cast from 'void (*)(struct snd_pcm_substream *)' to 'snd_aw2_saa7146_it_cb' (aka 'void (*)(void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
392 | (snd_aw2_saa7146_it_cb)
| ^~~~~~~~~~~~~~~~~~~~~~~
393 | snd_pcm_period_elapsed,
| ~~~~~~~~~~~~~~~~~~~~~~

Add a forward declaration for struct snd_pcm_substrea to allow it to just
use the correct prototype.

Fixes: 98f2a97f207a ("[ALSA] Emagic Audiowerk 2 ALSA driver.")
Signed-off-by: Arnd Bergmann <[email protected]>
---
sound/pci/aw2/aw2-saa7146.h | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/sound/pci/aw2/aw2-saa7146.h b/sound/pci/aw2/aw2-saa7146.h
index b5c5a71c0ac3..3a3de56b9b07 100644
--- a/sound/pci/aw2/aw2-saa7146.h
+++ b/sound/pci/aw2/aw2-saa7146.h
@@ -19,11 +19,12 @@

#define NUM_STREAM_CAPTURE_ANA 0

-typedef void (*snd_aw2_saa7146_it_cb) (void *);
+struct snd_pcm_substream;
+typedef void (*snd_aw2_saa7146_it_cb) (struct snd_pcm_substream *);

struct snd_aw2_saa7146_cb_param {
snd_aw2_saa7146_it_cb p_it_callback;
- void *p_callback_param;
+ struct snd_pcm_substream *p_callback_param;
};

/* definition of the chip-specific record */
--
2.39.2



2024-02-13 13:28:14

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH] ALSA: aw2: avoid casting function pointers

On Tue, 13 Feb 2024 11:13:19 +0100,
Arnd Bergmann wrote:
>
> From: Arnd Bergmann <[email protected]>
>
> clang-16 started warning about incompatible function pointers here:
>
> sound/pci/aw2/aw2-alsa.c:363:11: error: cast from 'void (*)(struct snd_pcm_substream *)' to 'snd_aw2_saa7146_it_cb' (aka 'void (*)(void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
> 363 | (snd_aw2_saa7146_it_cb)
> | ^~~~~~~~~~~~~~~~~~~~~~~
> 364 | snd_pcm_period_elapsed,
> | ~~~~~~~~~~~~~~~~~~~~~~
> sound/pci/aw2/aw2-alsa.c:392:10: error: cast from 'void (*)(struct snd_pcm_substream *)' to 'snd_aw2_saa7146_it_cb' (aka 'void (*)(void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
> 392 | (snd_aw2_saa7146_it_cb)
> | ^~~~~~~~~~~~~~~~~~~~~~~
> 393 | snd_pcm_period_elapsed,
> | ~~~~~~~~~~~~~~~~~~~~~~
>
> Add a forward declaration for struct snd_pcm_substrea to allow it to just
> use the correct prototype.
>
> Fixes: 98f2a97f207a ("[ALSA] Emagic Audiowerk 2 ALSA driver.")
> Signed-off-by: Arnd Bergmann <[email protected]>

Thanks, applied.


Takashi