mirror of
https://github.com/torvalds/linux.git
synced 2026-09-19 00:58:02 +02:00
tascam_disconnect() cancels capture_work and midi_in_work before
usb_kill_anchored_urbs() kills the capture/MIDI-in URBs. Those URBs
self-resubmit, and their completion handlers reschedule the work.
A URB that completes in the small window between cancel_work_sync() and
usb_kill_anchored_urbs() therefore re-arms the work after its only
cancel. Nothing cancels it again before snd_card_free() frees the
card-private tascam structure, so the work handler then runs on freed
memory.
Kill the anchored URBs before cancelling the work; once the work is
cancelled no remaining URB can complete to re-arm it.
Fixes:
|
||
|---|---|---|
| .. | ||
| Makefile | ||
| us122l.c | ||
| us122l.h | ||
| us144mkii_capture.c | ||
| us144mkii_controls.c | ||
| us144mkii_midi.c | ||
| us144mkii_pcm.c | ||
| us144mkii_pcm.h | ||
| us144mkii_playback.c | ||
| us144mkii.c | ||
| us144mkii.h | ||
| usb_stream.c | ||
| usb_stream.h | ||
| usbus428ctldefs.h | ||
| usbusx2y.c | ||
| usbusx2y.h | ||
| usbusx2yaudio.c | ||
| usx2y.h | ||
| usX2Yhwdep.c | ||
| usX2Yhwdep.h | ||
| usx2yhwdeppcm.c | ||
| usx2yhwdeppcm.h | ||