From: Dafna Hirschfeld > Sent: 20 October 2020 18:10 > > Am 20.10.20 um 17:29 schrieb David Laight: > > From: Colin King > >> Sent: 20 October 2020 15:47 > >> > >> From: Colin Ian King <colin.king@xxxxxxxxxxxxx> > >> ... > >> diff --git a/drivers/staging/media/rkisp1/rkisp1-resizer.c b/drivers/staging/media/rkisp1/rkisp1- > >> resizer.c > >> index 1687d82e6c68..7ca5b47c5bf5 100644 > >> --- a/drivers/staging/media/rkisp1/rkisp1-resizer.c > >> +++ b/drivers/staging/media/rkisp1/rkisp1-resizer.c > >> @@ -763,8 +763,10 @@ static void rkisp1_rsz_unregister(struct rkisp1_resizer *rsz) > >> > >> static int rkisp1_rsz_register(struct rkisp1_resizer *rsz) > >> { > >> - const char * const dev_names[] = {RKISP1_RSZ_MP_DEV_NAME, > >> - RKISP1_RSZ_SP_DEV_NAME}; > >> + static const char * const dev_names[] = { > >> + RKISP1_RSZ_MP_DEV_NAME, > >> + RKISP1_RSZ_SP_DEV_NAME > >> + }; > >> struct media_pad *pads = rsz->pads; > >> struct v4l2_subdev *sd = &rsz->sd; > >> int ret; > > > > Don't look at what that code is actually doing.... > > It is rather horrid. > > rkisp1_rsz_register() is called for each entry in an array (twice). > > The array index is written into rsz->id. > > The value is then used to select one of the two strings. > > But rsz->id is actually an enum type. > > Hi, > Is it that bad to use enum as an array index? > we use it in many places in the driver. You'd normally use a constant from the enum to size the array definition. In this case you've an enum, an array [2] and the dev_names[] all of which have to match 'by magic'. There is a loop that half implies you might add a third type. but then the following code only works for the two types. You've complex error recovery in case one of the calls to rkisp1_rsz_register() fails - but since there can only ever be two calls the code could be much simpler. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)