sst: make register_sst_card more self-contained
authorLu Guanqun <guanqun.lu@intel.com>
Wed, 6 Apr 2011 02:20:42 +0000 (10:20 +0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 6 Apr 2011 14:15:23 +0000 (23:15 +0900)
register_sst_card is used in ASoC code with field `scard_ops` being NULL.
Without this patch, there will be NULL dereference.

Signed-off-by: Lu Guanqun <guanqun.lu@intel.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/staging/intel_sst/intel_sst_drv_interface.c
drivers/staging/intel_sst/intelmid.c

index ea8e251b5099fd4307572a0d77aef1519ca92f9f..cf10dd606638c3de21e80951a43938a0c3fc872b 100644 (file)
@@ -508,7 +508,6 @@ int register_sst_card(struct intel_sst_card_ops *card)
                        sst_drv_ctx->pmic_state = SND_MAD_INIT_DONE;
                        sst_drv_ctx->rx_time_slot_status = 0; /*default AMIC*/
                        card->pcm_control = sst_pmic_ops.pcm_control;
-                       sst_drv_ctx->scard_ops->card_status = SND_CARD_UN_INIT;
                        return 0;
                } else {
                        pr_err("strcmp fail %s\n", card->module_name);
index fb2292186703d68852033a3f47a166dbf5d0d473..1fb39d4f98e225f2f5a8c5ed7a157e251847f052 100644 (file)
@@ -802,6 +802,7 @@ static int __devinit snd_intelmad_sst_register(
                pr_err("sst card registration failed\n");
                return ret_val;
        }
+       sst_drv_ctx->scard_ops->card_status = SND_CARD_UN_INIT;
 
        sst_card_vendor_id = intelmaddata->sstdrv_ops->vendor_id;
        intelmaddata->pmic_status = PMIC_UNINIT;