|
@@ -208,6 +208,7 @@ static int detect_quirks(struct snd_oxfw *oxfw)
|
|
static void do_registration(struct work_struct *work)
|
|
static void do_registration(struct work_struct *work)
|
|
{
|
|
{
|
|
struct snd_oxfw *oxfw = container_of(work, struct snd_oxfw, dwork.work);
|
|
struct snd_oxfw *oxfw = container_of(work, struct snd_oxfw, dwork.work);
|
|
|
|
+ int i;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
if (oxfw->registered)
|
|
if (oxfw->registered)
|
|
@@ -270,6 +271,12 @@ error:
|
|
snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->rx_stream);
|
|
snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->rx_stream);
|
|
if (oxfw->has_output)
|
|
if (oxfw->has_output)
|
|
snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->tx_stream);
|
|
snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->tx_stream);
|
|
|
|
+ for (i = 0; i < SND_OXFW_STREAM_FORMAT_ENTRIES; ++i) {
|
|
|
|
+ kfree(oxfw->tx_stream_formats[i]);
|
|
|
|
+ oxfw->tx_stream_formats[i] = NULL;
|
|
|
|
+ kfree(oxfw->rx_stream_formats[i]);
|
|
|
|
+ oxfw->rx_stream_formats[i] = NULL;
|
|
|
|
+ }
|
|
snd_card_free(oxfw->card);
|
|
snd_card_free(oxfw->card);
|
|
kfree(oxfw->spec);
|
|
kfree(oxfw->spec);
|
|
oxfw->spec = NULL;
|
|
oxfw->spec = NULL;
|