On Fri, May 07, 2010 at 08:52:00AM -0300, Mauro Carvalho Chehab wrote: > Jarod Wilson wrote: > > On Tue, May 04, 2010 at 06:06:41PM +0200, Dan Carpenter wrote: > >> On Tue, May 04, 2010 at 10:03:18AM -0400, Jarod Wilson wrote: > >>> @@ -1205,7 +1204,7 @@ static u32 imon_panel_key_lookup(u64 hw_code) > >>> if (imon_panel_key_table[i].hw_code == (code | 0xffee)) > >>> break; > >>> > >>> - keycode = imon_panel_key_table[i % IMON_KEY_RELEASE_OFFSET].keycode; > >>> + keycode = imon_panel_key_table[i].keycode; > >>> > >>> return keycode; > >>> } > >> There is still potentially a problem here because if we don't hit the > >> break statement, then we're one past the end of the array. > > > > D'oh. Okay, here's v2, should fix that buglet too. > > > > This hack was used when the imon driver was using internal key lookup > > routines, but became dead weight when the driver was converted to use > > ir-core's key lookup routines. These bits simply didn't get removed, > > drop 'em now. > > > > Pointed out by Dan Carpenter. > > > > v2: fix possible attempt to access beyond end of key table array, > > also pointed out by Dan. > > -ENOSOB > > Please, add your SOB here ;) D'oh. Signed-off-by: Jarod Wilson <jarod@xxxxxxxxxx> > > --- > > drivers/media/IR/imon.c | 12 ++++++------ > > 1 files changed, 6 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/media/IR/imon.c b/drivers/media/IR/imon.c > > index 27743eb..efe219a 100644 > > --- a/drivers/media/IR/imon.c > > +++ b/drivers/media/IR/imon.c > > @@ -55,7 +55,6 @@ > > #define BIT_DURATION 250 /* each bit received is 250us */ > > > > #define IMON_CLOCK_ENABLE_PACKETS 2 > > -#define IMON_KEY_RELEASE_OFFSET 1000 > > > > /*** P R O T O T Y P E S ***/ > > > > @@ -1199,13 +1198,14 @@ static u32 imon_panel_key_lookup(u64 hw_code) > > { > > int i; > > u64 code = be64_to_cpu(hw_code); > > - u32 keycode; > > + u32 keycode = KEY_RESERVED; > > > > - for (i = 0; i < ARRAY_SIZE(imon_panel_key_table); i++) > > - if (imon_panel_key_table[i].hw_code == (code | 0xffee)) > > + for (i = 0; i < ARRAY_SIZE(imon_panel_key_table); i++) { > > + if (imon_panel_key_table[i].hw_code == (code | 0xffee)) { > > + keycode = imon_panel_key_table[i].keycode; > > break; > > - > > - keycode = imon_panel_key_table[i % IMON_KEY_RELEASE_OFFSET].keycode; > > + } > > + } > > > > return keycode; > > } > > > > > -- > > Cheers, > Mauro -- Jarod Wilson jarod@xxxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html