Message ID | 20141125160033.4d613dd7@recife.lan (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 25/11/14 18:00, Mauro Carvalho Chehab wrote: > Em Tue, 25 Nov 2014 17:10:00 +0000 > Malcolm Priestley <malcolmpriestley@gmail.com> escreveu: > >> On 25/11/14 11:19, Mauro Carvalho Chehab wrote: >>> drivers/media/usb/dvb-usb-v2/lmedm04.c:828 lme_firmware_switch() warn: missing break? reassigning 'st->dvb_usb_lme2510_firmware' >>> drivers/media/usb/dvb-usb-v2/lmedm04.c:849 lme_firmware_switch() warn: missing break? reassigning 'st->dvb_usb_lme2510_firmware' >>> >>> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com> >>> >>> diff --git a/drivers/media/usb/dvb-usb-v2/lmedm04.c b/drivers/media/usb/dvb-usb-v2/lmedm04.c >>> index 9f2c5459b73a..99587418f4f0 100644 >>> --- a/drivers/media/usb/dvb-usb-v2/lmedm04.c >>> +++ b/drivers/media/usb/dvb-usb-v2/lmedm04.c >>> @@ -826,6 +826,7 @@ static const char *lme_firmware_switch(struct dvb_usb_device *d, int cold) >>> break; >>> } >>> st->dvb_usb_lme2510_firmware = TUNER_LG; >>> + break; >>> case TUNER_LG: >>> fw_lme = fw_lg; >>> ret = request_firmware(&fw, fw_lme, &udev->dev); >>> @@ -847,6 +848,7 @@ static const char *lme_firmware_switch(struct dvb_usb_device *d, int cold) >>> break; >>> } >>> st->dvb_usb_lme2510_firmware = TUNER_LG; >>> + break; >>> case TUNER_LG: >>> fw_lme = fw_c_lg; >>> ret = request_firmware(&fw, fw_lme, &udev->dev); >>> >> The break is not missing it's three lines above. >> >> All these switches are fall through until it finds firmware the user has. >> >> The switch comes into play when the firmware needs to changed. > > Oh! Well, I was so sure that the patch was right that I merged it already. > My bad. > > Anyway, smatch complains if dvb_usb_lme2510_firmware is rewritten, > and that bothers people that use static analyzers. So, IMO, the best > is to rework the code in order to: > - document that the breaks should not be used there; > - remove smatch warning. > > What do you think about the following patch? Fine Acked-by: Malcolm Priestley <tvboxspy@gmail.com> -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/media/usb/dvb-usb-v2/lmedm04.c b/drivers/media/usb/dvb-usb-v2/lmedm04.c index 99587418f4f0..994de53a574b 100644 --- a/drivers/media/usb/dvb-usb-v2/lmedm04.c +++ b/drivers/media/usb/dvb-usb-v2/lmedm04.c @@ -817,21 +817,22 @@ static const char *lme_firmware_switch(struct dvb_usb_device *d, int cold) case 0x1122: switch (st->dvb_usb_lme2510_firmware) { default: - st->dvb_usb_lme2510_firmware = TUNER_S0194; case TUNER_S0194: fw_lme = fw_s0194; ret = request_firmware(&fw, fw_lme, &udev->dev); if (ret == 0) { + st->dvb_usb_lme2510_firmware = TUNER_S0194; cold = 0; break; } - st->dvb_usb_lme2510_firmware = TUNER_LG; - break; + /* fall through */ case TUNER_LG: fw_lme = fw_lg; ret = request_firmware(&fw, fw_lme, &udev->dev); - if (ret == 0) + if (ret == 0) { + st->dvb_usb_lme2510_firmware = TUNER_LG; break; + } st->dvb_usb_lme2510_firmware = TUNER_DEFAULT; break; } @@ -839,27 +840,30 @@ static const char *lme_firmware_switch(struct dvb_usb_device *d, int cold) case 0x1120: switch (st->dvb_usb_lme2510_firmware) { default: - st->dvb_usb_lme2510_firmware = TUNER_S7395; case TUNER_S7395: fw_lme = fw_c_s7395; ret = request_firmware(&fw, fw_lme, &udev->dev); if (ret == 0) { + st->dvb_usb_lme2510_firmware = TUNER_S7395; cold = 0; break; } - st->dvb_usb_lme2510_firmware = TUNER_LG; - break; + /* fall through */ case TUNER_LG: fw_lme = fw_c_lg; ret = request_firmware(&fw, fw_lme, &udev->dev); - if (ret == 0) + if (ret == 0) { + st->dvb_usb_lme2510_firmware = TUNER_LG; break; - st->dvb_usb_lme2510_firmware = TUNER_S0194; + } + /* fall through */ case TUNER_S0194: fw_lme = fw_c_s0194; ret = request_firmware(&fw, fw_lme, &udev->dev); - if (ret == 0) + if (ret == 0) { + st->dvb_usb_lme2510_firmware = TUNER_S0194; break; + } st->dvb_usb_lme2510_firmware = TUNER_DEFAULT; cold = 0; break;