summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/media/radio/CG2900/cg2900_fm_api.c12
-rw-r--r--drivers/media/radio/CG2900/cg2900_fm_driver.c8
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)