OSDN Git Service

media: ccs: Replace somewhat harsh internal checks based on BUG with WARN_ON
authorSakari Ailus <sakari.ailus@linux.intel.com>
Wed, 27 May 2020 23:00:29 +0000 (01:00 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 3 Dec 2020 11:27:31 +0000 (12:27 +0100)
If an internal driver error was encountered, BUG was issued. Instead, do
less harsh WARN_ON_ONCE and try to manage with the consequences.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/i2c/ccs/ccs-core.c

index 25b4c84..70b4d21 100644 (file)
@@ -546,6 +546,10 @@ static void ccs_update_mbus_formats(struct ccs_sensor *sensor)
                to_csi_format_idx(sensor->internal_csi_format) & ~3;
        unsigned int pixel_order = ccs_pixel_order(sensor);
 
+       if (WARN_ON_ONCE(max(internal_csi_format_idx, csi_format_idx) +
+                        pixel_order >= ARRAY_SIZE(ccs_csi_data_formats)))
+               return;
+
        sensor->mbus_frame_fmts =
                sensor->default_mbus_frame_fmts << pixel_order;
        sensor->csi_format =
@@ -554,9 +558,6 @@ static void ccs_update_mbus_formats(struct ccs_sensor *sensor)
                &ccs_csi_data_formats[internal_csi_format_idx
                                         + pixel_order];
 
-       BUG_ON(max(internal_csi_format_idx, csi_format_idx) + pixel_order
-              >= ARRAY_SIZE(ccs_csi_data_formats));
-
        dev_dbg(&client->dev, "new pixel order %s\n",
                pixel_order_str[pixel_order]);
 }
@@ -1806,7 +1807,7 @@ static void ccs_propagate(struct v4l2_subdev *subdev,
                *crops[CCS_PAD_SRC] = *comp;
                break;
        default:
-               BUG();
+               WARN_ON_ONCE(1);
        }
 }