summaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorSean Young <sean@mess.org>2019-02-22 04:08:05 -0500
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2019-03-01 09:19:41 -0500
commit05f0edadcc5fccdfc0676825b3e70e75dc0a8a84 (patch)
tree82dc534b881c6ee10326d634aa313b4331e51904 /drivers/media
parent9fabe1d108ca4755a880de43f751f1c054f8894d (diff)
media: Revert "media: rc: some events are dropped by userspace"
When an rc device is created, we do not know what key codes it will support, since a new keymap might be loaded at some later point. So, we set all keybit in the input device. The uevent for the input device includes all the key codes, of which there are now 768. This overflows the size of the uevent (UEVENT_BUFFER_SIZE) and no event is generated. Revert for now until we figure out a different solution. This reverts commit fec225a04330d0f222d24feb5bea045526031675. Cc: <stable@vger.kernel.org> # 4.20+ Reported-by: Christian Holpert <christian@holpert.de> Signed-off-by: Sean Young <sean@mess.org> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/rc/rc-main.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
index dc38e9c0a2ff..141fbf191bc4 100644
--- a/drivers/media/rc/rc-main.c
+++ b/drivers/media/rc/rc-main.c
@@ -280,6 +280,7 @@ static unsigned int ir_update_mapping(struct rc_dev *dev,
280 unsigned int new_keycode) 280 unsigned int new_keycode)
281{ 281{
282 int old_keycode = rc_map->scan[index].keycode; 282 int old_keycode = rc_map->scan[index].keycode;
283 int i;
283 284
284 /* Did the user wish to remove the mapping? */ 285 /* Did the user wish to remove the mapping? */
285 if (new_keycode == KEY_RESERVED || new_keycode == KEY_UNKNOWN) { 286 if (new_keycode == KEY_RESERVED || new_keycode == KEY_UNKNOWN) {
@@ -294,9 +295,20 @@ static unsigned int ir_update_mapping(struct rc_dev *dev,
294 old_keycode == KEY_RESERVED ? "New" : "Replacing", 295 old_keycode == KEY_RESERVED ? "New" : "Replacing",
295 rc_map->scan[index].scancode, new_keycode); 296 rc_map->scan[index].scancode, new_keycode);
296 rc_map->scan[index].keycode = new_keycode; 297 rc_map->scan[index].keycode = new_keycode;
298 __set_bit(new_keycode, dev->input_dev->keybit);
297 } 299 }
298 300
299 if (old_keycode != KEY_RESERVED) { 301 if (old_keycode != KEY_RESERVED) {
302 /* A previous mapping was updated... */
303 __clear_bit(old_keycode, dev->input_dev->keybit);
304 /* ... but another scancode might use the same keycode */
305 for (i = 0; i < rc_map->len; i++) {
306 if (rc_map->scan[i].keycode == old_keycode) {
307 __set_bit(old_keycode, dev->input_dev->keybit);
308 break;
309 }
310 }
311
300 /* Possibly shrink the keytable, failure is not a problem */ 312 /* Possibly shrink the keytable, failure is not a problem */
301 ir_resize_table(dev, rc_map, GFP_ATOMIC); 313 ir_resize_table(dev, rc_map, GFP_ATOMIC);
302 } 314 }
@@ -1759,7 +1771,6 @@ static int rc_prepare_rx_device(struct rc_dev *dev)
1759 set_bit(EV_REP, dev->input_dev->evbit); 1771 set_bit(EV_REP, dev->input_dev->evbit);
1760 set_bit(EV_MSC, dev->input_dev->evbit); 1772 set_bit(EV_MSC, dev->input_dev->evbit);
1761 set_bit(MSC_SCAN, dev->input_dev->mscbit); 1773 set_bit(MSC_SCAN, dev->input_dev->mscbit);
1762 bitmap_fill(dev->input_dev->keybit, KEY_CNT);
1763 1774
1764 /* Pointer/mouse events */ 1775 /* Pointer/mouse events */
1765 set_bit(EV_REL, dev->input_dev->evbit); 1776 set_bit(EV_REL, dev->input_dev->evbit);