linux/drivers/media
Sean Young a607f51e5a media: Revert "[media] lirc_dev: remove superfluous get/put_device() calls"
This reverts commit 5be2b76a9c.

Only when the lirc device is freed, should we drop our reference to
rc_dev, else we the rc_dev is freed to early. If userspace has
a file descriptor open during unplug, it goes bang.

==================================================================
BUG: KASAN: use-after-free in __lock_acquire+0x7bb/0x1e10
Read of size 8 at addr ffff8801d7d61ed0 by task ir-rec/2609

-snip-
 mutex_lock_nested+0x1b/0x20
 ? mutex_lock_nested+0x1b/0x20
 rc_close.part.6+0x20/0x60 [rc_core]
 rc_close+0x13/0x20 [rc_core]
 lirc_dev_fop_close+0x62/0xd0 [lirc_dev]
 __fput+0x236/0x410
 ? fput+0xb0/0xb0
 ? do_raw_spin_trylock+0x110/0x110
 ? set_rq_offline.part.70+0xa0/0xa0
 ____fput+0xe/0x10
 task_work_run+0x116/0x180
 ? task_work_cancel+0x170/0x170
 ? _raw_spin_unlock+0x27/0x40
 ? switch_task_namespaces+0x5f/0x90
 do_exit+0x68b/0xe80

Cc: stable@vger.kernel.org # For Kernel 4.13
Fixes: 5be2b76a9c ("[media] lirc_dev: remove superfluous get/put_device() calls")
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
2017-09-05 07:28:59 -04:00
..
cec media: cec: replace pin->cur_value by adap->cec_pin_is_high 2017-08-26 08:35:10 -04:00
common media: saa7146: constify videobuf_queue_ops structures 2017-08-26 14:29:51 -04:00
dvb-core media: dvb/frontend.h: move out a private internal structure 2017-09-05 05:53:00 -04:00
dvb-frontends media: mn88473: reset stream ID reg if no PLP given 2017-08-27 18:06:52 -04:00
firewire [media] firewire: don't break long lines 2016-10-21 10:06:00 -02:00
i2c media: max2175: Propagate the real error on devm_clk_get() failure 2017-08-27 18:14:11 -04:00
mmc
pci media: dst_ca: remove CA_SET_DESCR boilerplate 2017-09-05 06:13:46 -04:00
platform media: platform: make video_device const 2017-08-27 08:44:30 -04:00
radio media: radio: make video_device const 2017-08-27 08:47:20 -04:00
rc media: Revert "[media] lirc_dev: remove superfluous get/put_device() calls" 2017-09-05 07:28:59 -04:00
spi [media] gs1662: drop kfree for memory allocated with devm_kzalloc 2016-10-24 17:59:08 -02:00
tuners media: tuners: make snd_pcm_hardware const 2017-08-20 08:05:25 -04:00
usb media: dw2102: make dvb_usb_device_description structures const 2017-08-27 18:08:55 -04:00
v4l2-core media: v4l2-flash-led-class: Create separate sub-devices for indicators 2017-08-26 20:26:35 -04:00
Kconfig media: rc-core: do not depend on MEDIA_SUPPORT 2017-08-20 09:39:36 -04:00
Makefile [media] cec: select CEC_CORE instead of depend on it 2017-06-04 15:23:33 -03:00
media-device.c media: drop use of MEDIA_API_VERSION 2017-08-08 06:03:15 -04:00
media-devnode.c media: utilize new cdev_device_add helper function 2017-03-21 06:44:33 +01:00
media-entity.c media: Make parameter of media_entity_remote_pad() const 2017-07-20 16:54:04 -04:00