[alsa-devel] [PATCH 00/39] seq: obsolete change of address limit
Takashi Sakamoto
o-takashi at sakamocchi.jp
Sun Aug 7 11:48:36 CEST 2016
Hi,
ALSA sequencer core has two types of client; user application and kernel
driver. The core allows both types of client to do relevant operations,
thus it's required for the core to handle data in both user and kernel
spaces.
Currently, this is achieved by changing address limit of running task.
This is a well-known technique to suppress address check, while it's
just a suppression and unfriendly to readers or static code parsers.
This patchset obsoletes the usage. In process context, data in user space
is once copied to kernel space, then operated and copied to user space.
As a result, actual operations for each ioctl command handle data in kernel
space, and '__user' qualifier is useless.
In this series, patch 1-8 just apply above design. The rest changes each
operation following to the design. Therefore, static code parser like
sparce generates warnings temporarily in a way to apply these patches.
There's a concern of this solution. The data for ioctl is always copied to
kernel space or to kernel space even when it's read-only or write-only. But
this brings no severe issue as long as I read ALSA sequencer core.
(This patchset is a part of my work to introduce EPIPE into ALSA rawmidi
core.)
Takashi Sakamoto (39):
ALSA: seq: add const qualifier to table of functions for ioctl
ALSA: seq: apply shorter name for file local functions
ALSA: seq: fulfill callback entry for ioctl
ALSA: seq: copy ioctl data from user space to kernel stack
ALSA: seq: add documentation for snd_seq_kernel_client_ctl
ALSA: seq: obsolete address mode in compatibility layer
ALSA: seq: obsolete change of address limit in in-kernel path for
ioctl
ALSA: seq: obsolete address limit helper
ALSA: seq: optimize pversion function to new design
ALSA: seq: optimize client_id function to new design
ALSA: seq: optimize system_info function to new design
ALSA: seq: optimize running mode function to new design
ALSA: seq: optimize client_info function to new design
ALSA: seq: optimize set_client_info function to new design
ALSA: seq: optimize create_port function to new design
ALSA: seq: optimize delete_port function to new design
ALSA: seq: optimize get_port_info function to new design
ALSA: seq: optimize seq_port_info function to new design
ALSA: seq: optimize subscribe_port function to new design
ALSA: seq: optimize unsubscribe_port function to new design
ALSA: seq: optimize create_queue function to new design
ALSA: seq: optimize delete_queue function to new design
ALSA: seq: optimize get_queue_info function to new design
ALSA: seq: optimize seq_queue_info function to new design
ALSA: seq: optimize get_named_queue function to new design
ALSA: seq: optimize get_queue_status function to new design
ALSA: seq: optimize get_queue_tempo function to new design
ALSA: seq: optimize set_queue_tempo function to new design
ALSA: seq: optimize get_queue_timer function to new design
ALSA: seq: optimize seq_queue_timer function to new design
ALSA: seq: optimize get_queue_client function to new design
ALSA: seq: optimize set_queue_client function to new design
ALSA: seq: optimize get_client_pool function to new design
ALSA: seq: optimize seq_client_pool function to new design
ALSA: seq: optimize remove_events function to new design
ALSA: seq: optimize get_subscription function to new design
ALSA: seq: optimize query_subs function to new design
ALSA: seq: optimize query_next_client function to new design
ALSA: seq: optimize query_next_port function to new design
sound/core/seq/seq_clientmgr.c | 854 +++++++++++++++++++----------------------
sound/core/seq/seq_compat.c | 26 +-
2 files changed, 407 insertions(+), 473 deletions(-)
--
2.7.4
More information about the Alsa-devel
mailing list