[PATCH v5 0/2] ALSA: usb-audio: the Topping M62's vendor controls

Mikhail Gavrilov <[email protected]>
Newsgroups gmane.linux.sound,gmane.linux.kernel.input,gmane.linux.kernel
Message-ID <[email protected]>
v5 takes three more points from the automated review, all in 1/2, and
declines two that are a repeat of v3's.

Taken:

  - Allocation on the resume path now asks for no I/O. topping_send()
    is reached from topping_resume(), where reclaim can wait on a block
    device that has not woken yet, and the URB submitted there wanted
    the same treatment. This is what snd_usb_mixer_activate() does a
    few hundred lines away in mixer.c, so it is the file's own habit
    rather than a novelty.

  - A resubmit that fails with -EPERM is no longer reported. That is a
    URB usb_kill_urb() has already refused, which is the ordinary sound
    of an unplug rather than a fault. The line has been wrong since v1;
    nobody noticed until now.

Declined, with the same reasoning the v4 cover letter gave, since the
finding came back unchanged: a control callback cannot dereference a
freed private structure during disconnect. snd_ctl_elem_read() and
snd_ctl_elem_write() take snd_power_ref_and_wait(card) around the
callback; snd_card_disconnect() ends with snd_power_sync_ref(card),
which waits until every such reference is dropped; and in usb-audio's
disconnect, snd_card_disconnect() runs before
usb_audio_disconnect_components() reaches snd_usb_mixer_disconnect()
and hence this driver's private_free(). No callback can be inside the
driver when the structure is freed, and none can enter afterwards --
snd_power_ref_and_wait() sees card->shutdown and returns -ENODEV.

Nothing else changed since v4. 2/2 is unchanged. The questions from the
v2 cover letter still stand: whether snd-usb-audio registering the
hid_driver itself would be a better shape than either road posted, and
whether there is a convention for a control that can be written but not
read.

Tested on the hardware as before, including a suspend and resume cycle
and unbind and bind again, on a KASAN and lockdep kernel; no reports.

Mikhail Gavrilov (2):
  ALSA: usb-audio: expose the Topping M62's analogue gains as mixer
    controls
  ALSA: usb-audio: let the M62's outputs say what they listen to

 MAINTAINERS               |   6 +
 drivers/hid/hid-ids.h     |   3 +
 drivers/hid/hid-quirks.c  |   2 +
 sound/usb/Makefile        |   1 +
 sound/usb/card.c          |  19 +
 sound/usb/mixer_quirks.c  |   5 +
 sound/usb/mixer_topping.c | 744 ++++++++++++++++++++++++++++++++++++++
 sound/usb/mixer_topping.h |   7 +
 sound/usb/usbaudio.h      |   4 +
 9 files changed, 791 insertions(+)
 create mode 100644 sound/usb/mixer_topping.c
 create mode 100644 sound/usb/mixer_topping.h


base-commit: 2709dd5ae32f0828f386327c76bba9f39f63a1c6
-- 
2.55.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.