Takashi Iwai 5803b02388 ALSA: seq: Fix copy_from_user() call inside lock
The event handler in the virmidi sequencer code takes a read-lock for
the linked list traverse, while it's calling snd_seq_dump_var_event()
in the loop.  The latter function may expand the user-space data
depending on the event type.  It eventually invokes copy_from_user(),
which might be a potential dead-lock.

The sequencer core guarantees that the user-space data is passed only
with atomic=0 argument, but snd_virmidi_dev_receive_event() ignores it
and always takes read-lock().  For avoiding the problem above, this
patch introduces rwsem for non-atomic case, while keeping rwlock for
atomic case.

Also while we're at it: the superfluous irq flags is dropped in
snd_virmidi_input_open().

Reported-by: Jia-Ju Bai <baijiaju1990@163.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2017-10-09 14:10:13 +02:00
..
2015-11-18 18:08:54 +00:00
2011-08-17 00:53:54 +09:00
2011-05-19 14:10:45 -07:00
2017-08-30 20:44:29 +02:00
2014-05-05 18:20:22 -07:00
2015-11-30 12:24:12 +00:00
2012-09-28 14:21:54 +01:00
2017-04-03 08:42:43 +02:00
2015-02-02 14:42:42 +01:00
2016-08-08 11:55:20 +01:00
2015-05-22 16:01:44 +02:00
2014-07-04 18:50:51 +01:00
2015-07-09 12:00:11 +01:00
2017-06-28 18:33:31 +01:00
2014-04-18 18:52:18 +01:00
2015-11-18 12:55:25 +00:00
2016-09-24 19:51:57 +01:00
2015-03-11 12:08:20 +00:00
2012-12-24 15:57:20 +00:00
2014-09-15 15:52:03 +02:00
2011-09-20 16:02:16 +01:00
2011-08-08 14:30:37 +09:00