diff options
-rw-r--r-- | drivers/media/radio/CG2900/cg2900_fm_api.c | 12 | ||||
-rw-r--r-- | drivers/media/radio/CG2900/cg2900_fm_driver.c | 8 |
2 files changed, 9 insertions, 11 deletions
diff --git a/drivers/media/radio/CG2900/cg2900_fm_api.c b/drivers/media/radio/CG2900/cg2900_fm_api.c index c636f2fe8a9..a50a4577f7d 100644 --- a/drivers/media/radio/CG2900/cg2900_fm_api.c +++ b/drivers/media/radio/CG2900/cg2900_fm_api.c @@ -2424,11 +2424,13 @@ int cg2900_fm_rds_off(void) result = -EINVAL; goto error; } - /* Stop the RDS Thread */ - fm_rds_status = false; - FM_DEBUG_REPORT("cg2900_fm_rds_off: " - "Stopping RDS Thread"); - fmd_stop_rds_thread(); + if (fm_rds_status) { + /* Stop the RDS Thread */ + FM_DEBUG_REPORT("cg2900_fm_rds_off: " + "Stopping RDS Thread"); + fmd_stop_rds_thread(); + fm_rds_status = false; + } error: FM_DEBUG_REPORT("cg2900_fm_rds_off: returning %d", diff --git a/drivers/media/radio/CG2900/cg2900_fm_driver.c b/drivers/media/radio/CG2900/cg2900_fm_driver.c index 4120eaa4d50..ad04705cc55 100644 --- a/drivers/media/radio/CG2900/cg2900_fm_driver.c +++ b/drivers/media/radio/CG2900/cg2900_fm_driver.c @@ -1023,7 +1023,7 @@ static void fmd_read_cb( FM_INFO_REPORT("fmd_read_cb"); if (skb->data == NULL || skb->len == 0) - goto error; + return; spin_lock(&fmd_spinlock_read); CG2900_HEX_READ_PACKET_DUMP; @@ -1035,7 +1035,6 @@ static void fmd_read_cb( FM_GET_PKT_LEN(skb->data), FM_GET_RSP_PKT_ADDR(skb->data)); -error: kfree_skb(skb); spin_unlock(&fmd_spinlock_read); } @@ -4639,11 +4638,8 @@ void fmd_stop_rds_thread(void) sema_init(&rds_sem, 0); cb_rds_func = NULL; rds_thread_required = false; - if (rds_thread_task) { - kthread_stop(rds_thread_task); + if (rds_thread_task) rds_thread_task = NULL; - return; - } } void fmd_get_rds_sem(void) |