diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-09-26 10:38:21 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-09-26 10:38:21 +0200 |
commit | 67102bd31b4e31abb0abbc390381212a2d65db72 (patch) | |
tree | 904754c940eb87b951cf877f09074a7d28bc2947 /sound/core/init.c | |
parent | ad5dbfc123e6ffbbde194e2a4603323e09f741ee (diff) | |
parent | f76349cf41451c5c42a99f18a9163377e4b364ff (diff) |
Merge 6.0-rc7 into usb-next
We need the USB fixes in here for other follow-on changes to be able to
be applied successfully.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'sound/core/init.c')
-rw-r--r-- | sound/core/init.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sound/core/init.c b/sound/core/init.c index 193dae361fac..5377f94eb211 100644 --- a/sound/core/init.c +++ b/sound/core/init.c @@ -178,10 +178,8 @@ int snd_card_new(struct device *parent, int idx, const char *xid, return -ENOMEM; err = snd_card_init(card, parent, idx, xid, module, extra_size); - if (err < 0) { - kfree(card); - return err; - } + if (err < 0) + return err; /* card is freed by error handler */ *card_ret = card; return 0; @@ -233,7 +231,7 @@ int snd_devm_card_new(struct device *parent, int idx, const char *xid, card->managed = true; err = snd_card_init(card, parent, idx, xid, module, extra_size); if (err < 0) { - devres_free(card); + devres_free(card); /* in managed mode, we need to free manually */ return err; } @@ -297,6 +295,8 @@ static int snd_card_init(struct snd_card *card, struct device *parent, mutex_unlock(&snd_card_mutex); dev_err(parent, "cannot find the slot for index %d (range 0-%i), error: %d\n", idx, snd_ecards_limit - 1, err); + if (!card->managed) + kfree(card); /* manually free here, as no destructor called */ return err; } set_bit(idx, snd_cards_lock); /* lock it */ |