Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] ir: Fix IR_MAX_DURATION enforcement

Don't assume that IR_MAX_DURATION is a bitmask. It isn't.

Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>

+7 -4
+3 -2
drivers/media/rc/redrat3.c
··· 322 322 u32 result; 323 323 u32 divisor; 324 324 325 - microsec &= IR_MAX_DURATION; 325 + microsec = (microsec > IR_MAX_DURATION) ? IR_MAX_DURATION : microsec; 326 326 divisor = (RR3_CLK_CONV_FACTOR / 1000); 327 327 result = (u32)(microsec * divisor) / 1000; 328 328 ··· 380 380 if (i == 0) 381 381 trailer = rawir.duration; 382 382 /* cap the value to IR_MAX_DURATION */ 383 - rawir.duration &= IR_MAX_DURATION; 383 + rawir.duration = (rawir.duration > IR_MAX_DURATION) ? 384 + IR_MAX_DURATION : rawir.duration; 384 385 385 386 dev_dbg(dev, "storing %s with duration %d (i: %d)\n", 386 387 rawir.pulse ? "pulse" : "space", rawir.duration, i);
+4 -2
drivers/media/rc/streamzap.c
··· 152 152 sz->signal_last.tv_usec); 153 153 rawir.duration -= sz->sum; 154 154 rawir.duration = US_TO_NS(rawir.duration); 155 - rawir.duration &= IR_MAX_DURATION; 155 + rawir.duration = (rawir.duration > IR_MAX_DURATION) ? 156 + IR_MAX_DURATION : rawir.duration; 156 157 } 157 158 sz_push(sz, rawir); 158 159 ··· 166 165 rawir.duration += SZ_RESOLUTION / 2; 167 166 sz->sum += rawir.duration; 168 167 rawir.duration = US_TO_NS(rawir.duration); 169 - rawir.duration &= IR_MAX_DURATION; 168 + rawir.duration = (rawir.duration > IR_MAX_DURATION) ? 169 + IR_MAX_DURATION : rawir.duration; 170 170 sz_push(sz, rawir); 171 171 } 172 172