From 1339fc5a38bbc976ec0f49fc16d3e3389130010d Mon Sep 17 00:00:00 2001 From: xiaowang Date: Tue, 10 Mar 2020 09:57:58 +0800 Subject: [PATCH] radio: RTC6226: correctly cleanup videodev Fix issue: free static videodev structure. Crash might occur when video_register_device return fail. CRs-Fixed: 2638184 Change-Id: Ie5b2485caa2649b2baeab5e136a949ec6765bac8 Signed-off-by: xiaowang --- drivers/media/radio/rtc6226/radio-rtc6226-i2c.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/media/radio/rtc6226/radio-rtc6226-i2c.c b/drivers/media/radio/rtc6226/radio-rtc6226-i2c.c index 99ab1472c2ee..eb8461f606b9 100644 --- a/drivers/media/radio/rtc6226/radio-rtc6226-i2c.c +++ b/drivers/media/radio/rtc6226/radio-rtc6226-i2c.c @@ -891,7 +891,7 @@ err_wqueue: err_rds: kfree(radio->buffer); err: - video_device_release(&radio->videodev); + video_device_release_empty(&radio->videodev); err_v4l2: v4l2_device_unregister(v4l2_dev); err_vreg: @@ -920,9 +920,10 @@ static int rtc6226_i2c_remove(struct i2c_client *client) free_irq(client->irq, radio); kfree(radio->buffer); - video_device_release(&radio->videodev); v4l2_ctrl_handler_free(&radio->ctrl_handler); - video_unregister_device(&radio->videodev); + if (video_is_registered(&radio->videodev)) + video_unregister_device(&radio->videodev); + video_device_release_empty(&radio->videodev); v4l2_device_unregister(&radio->v4l2_dev); kfree(radio); FMDBG("%s exit\n", __func__);