From: Shilpa P <shilpa...@gmail.com>

Don't crash the Kernel for driver errors

Signed-off-by: Shilpa P <shilpa...@gmail.com>
---
 drivers/staging/media/bcm2048/radio-bcm2048.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/media/bcm2048/radio-bcm2048.c 
b/drivers/staging/media/bcm2048/radio-bcm2048.c
index 4d9bd02..05f5918 100644
--- a/drivers/staging/media/bcm2048/radio-bcm2048.c
+++ b/drivers/staging/media/bcm2048/radio-bcm2048.c
@@ -1538,7 +1538,11 @@ static int bcm2048_parse_rt_match_c(struct 
bcm2048_device *bdev, int i,
        if (crc == BCM2048_RDS_CRC_UNRECOVARABLE)
                return 0;
 
-       BUG_ON((index+2) >= BCM2048_MAX_RDS_RT);
+       if ((index + 2) >= BCM2048_MAX_RDS_RT) {
+               dev_err(&bdev->client->dev,
+                       "Incorrect index = %d\n", index);
+               return 0;
+       }
 
        if ((bdev->rds_info.radio_text[i] & BCM2048_RDS_BLOCK_MASK) ==
                BCM2048_RDS_BLOCK_C) {
@@ -1561,7 +1565,11 @@ static void bcm2048_parse_rt_match_d(struct 
bcm2048_device *bdev, int i,
        if (crc == BCM2048_RDS_CRC_UNRECOVARABLE)
                return;
 
-       BUG_ON((index+4) >= BCM2048_MAX_RDS_RT);
+       if ((index + 4) >= BCM2048_MAX_RDS_RT) {
+               dev_err(&bdev->client->dev,
+                       "Incorrect index = %d\n", index);
+               return;
+       }
 
        if ((bdev->rds_info.radio_text[i] & BCM2048_RDS_BLOCK_MASK) ==
            BCM2048_RDS_BLOCK_D)
-- 
1.9.1

Reply via email to