ALSA: fireworks: use managed-resource to maintain response buffer
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Tue, 2 Oct 2018 23:21:52 +0000 (08:21 +0900)
committerTakashi Iwai <tiwai@suse.de>
Thu, 4 Oct 2018 05:54:07 +0000 (07:54 +0200)
ALSA fireworks driver allocates memory object to handle response from
target unit. The object is used to initiate transaction unique to
Fireworks board module. This can be released as managed-resource
of 'struct snd_card.card_dev'.

This commit uses managed-resource of the sound card device for this
purpose.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/firewire/fireworks/fireworks.c

index 2ff7b9c..f680e2f 100644 (file)
@@ -189,8 +189,6 @@ static void efw_free(struct snd_efw *efw)
        snd_efw_stream_destroy_duplex(efw);
        snd_efw_transaction_remove_instance(efw);
 
-       kfree(efw->resp_buf);
-
        mutex_destroy(&efw->mutex);
        fw_unit_put(efw->unit);
 }
@@ -247,8 +245,9 @@ do_registration(struct work_struct *work)
        /* prepare response buffer */
        snd_efw_resp_buf_size = clamp(snd_efw_resp_buf_size,
                                      SND_EFW_RESPONSE_MAXIMUM_BYTES, 4096U);
-       efw->resp_buf = kzalloc(snd_efw_resp_buf_size, GFP_KERNEL);
-       if (efw->resp_buf == NULL) {
+       efw->resp_buf = devm_kzalloc(&efw->card->card_dev,
+                                    snd_efw_resp_buf_size, GFP_KERNEL);
+       if (!efw->resp_buf) {
                err = -ENOMEM;
                goto error;
        }
@@ -300,8 +299,6 @@ error:
        snd_efw_transaction_remove_instance(efw);
        snd_efw_stream_destroy_duplex(efw);
        snd_card_free(efw->card);
-       kfree(efw->resp_buf);
-       efw->resp_buf = NULL;
        dev_info(&efw->unit->device,
                 "Sound card registration failed: %d\n", err);
 }