On 7/7/23 11:50, Uwe Kleine-König wrote:
While there is probably only ever a single instance of such a pcmtst device, it's still bad style to use a static variable to store per device data. Make use of platform_get_drvdata() and platform_set_drvdata() which fixes a data corruption if there should be two or more such devices (or this driver is used as a template for another driver).
Signed-off-by: Uwe Kleine-König u.kleine-koenig@pengutronix.de
sound/drivers/pcmtest.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/sound/drivers/pcmtest.c b/sound/drivers/pcmtest.c index 1fff85feaf82..291e7fe47893 100644 --- a/sound/drivers/pcmtest.c +++ b/sound/drivers/pcmtest.c @@ -110,8 +110,6 @@ struct pcmtst_buf_iter { struct timer_list timer_instance; };
-static struct pcmtst *pcmtst;
- static struct snd_pcm_hardware snd_pcmtst_hw = { .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER |
@@ -552,6 +550,7 @@ static int snd_pcmtst_create(struct snd_card *card, struct platform_device *pdev static int pcmtst_probe(struct platform_device *pdev) { struct snd_card *card;
struct pcmtst *pcmtst; int err;
err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
@@ -573,11 +572,15 @@ static int pcmtst_probe(struct platform_device *pdev) if (err < 0) return err;
- platform_set_drvdata(pdev, pcmtst);
- return 0; }
-static void pdev_remove(struct platform_device *dev) +static void pdev_remove(struct platform_device *pdev) {
- struct pcmtst *pcmtst = platform_get_drvdata(pdev);
- snd_pcmtst_free(pcmtst); }
Also looks good.
Acked-by: Ivan Orlov ivan.orlov0322@gmail.com