All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/39] seq: obsolete change of address limit
@ 2016-08-07  9:48 Takashi Sakamoto
  2016-08-07  9:48 ` [PATCH 01/39] ALSA: seq: add const qualifier to table of functions for ioctl Takashi Sakamoto
                   ` (38 more replies)
  0 siblings, 39 replies; 63+ messages in thread
From: Takashi Sakamoto @ 2016-08-07  9:48 UTC (permalink / raw)
  To: clemens, tiwai; +Cc: alsa-devel

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

^ permalink raw reply	[flat|nested] 63+ messages in thread

end of thread, other threads:[~2016-08-09 13:01 UTC | newest]

Thread overview: 63+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-07  9:48 [PATCH 00/39] seq: obsolete change of address limit Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 01/39] ALSA: seq: add const qualifier to table of functions for ioctl Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 02/39] ALSA: seq: apply shorter name for file local functions Takashi Sakamoto
2016-08-08  6:56   ` Takashi Iwai
2016-08-07  9:48 ` [PATCH 03/39] ALSA: seq: fulfill callback entry for ioctl Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 04/39] ALSA: seq: copy ioctl data from user space to kernel stack Takashi Sakamoto
2016-08-07 10:15   ` Clemens Ladisch
2016-08-07 14:26     ` Takashi Sakamoto
2016-08-08  7:10       ` Takashi Iwai
2016-08-08 13:46         ` Takashi Sakamoto
2016-08-08 14:58           ` Takashi Iwai
2016-08-07  9:48 ` [PATCH 05/39] ALSA: seq: add documentation for snd_seq_kernel_client_ctl Takashi Sakamoto
2016-08-08  6:58   ` Takashi Iwai
2016-08-07  9:48 ` [PATCH 06/39] ALSA: seq: obsolete address mode in compatibility layer Takashi Sakamoto
2016-08-08  7:09   ` Takashi Iwai
2016-08-08 12:19     ` Takashi Sakamoto
2016-08-08 14:59       ` Takashi Iwai
2016-08-09 12:04         ` Takashi Sakamoto
2016-08-09 12:15           ` Takashi Iwai
2016-08-09 12:32             ` Takashi Sakamoto
2016-08-09 12:58               ` Takashi Iwai
2016-08-07  9:48 ` [PATCH 07/39] ALSA: seq: obsolete change of address limit in in-kernel path for ioctl Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 08/39] ALSA: seq: obsolete address limit helper Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 09/39] ALSA: seq: optimize pversion function to new design Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 10/39] ALSA: seq: optimize client_id " Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 11/39] ALSA: seq: optimize system_info " Takashi Sakamoto
2016-08-08  7:04   ` Takashi Iwai
2016-08-08  7:50     ` Takashi Iwai
2016-08-08 12:22       ` Takashi Sakamoto
2016-08-08 15:18         ` Takashi Iwai
2016-08-08  8:37     ` Takashi Sakamoto
2016-08-08 15:07       ` Takashi Iwai
2016-08-09 12:15         ` Takashi Sakamoto
2016-08-09 12:24           ` Takashi Iwai
2016-08-09 13:01             ` Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 12/39] ALSA: seq: optimize running mode " Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 13/39] ALSA: seq: optimize client_info " Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 14/39] ALSA: seq: optimize set_client_info " Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 15/39] ALSA: seq: optimize create_port " Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 16/39] ALSA: seq: optimize delete_port " Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 17/39] ALSA: seq: optimize get_port_info " Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 18/39] ALSA: seq: optimize seq_port_info " Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 19/39] ALSA: seq: optimize subscribe_port " Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 20/39] ALSA: seq: optimize unsubscribe_port " Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 21/39] ALSA: seq: optimize create_queue " Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 22/39] ALSA: seq: optimize delete_queue " Takashi Sakamoto
2016-08-07  9:48 ` [PATCH 23/39] ALSA: seq: optimize get_queue_info " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 24/39] ALSA: seq: optimize seq_queue_info " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 25/39] ALSA: seq: optimize get_named_queue " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 26/39] ALSA: seq: optimize get_queue_status " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 27/39] ALSA: seq: optimize get_queue_tempo " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 28/39] ALSA: seq: optimize set_queue_tempo " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 29/39] ALSA: seq: optimize get_queue_timer " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 30/39] ALSA: seq: optimize seq_queue_timer " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 31/39] ALSA: seq: optimize get_queue_client " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 32/39] ALSA: seq: optimize set_queue_client " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 33/39] ALSA: seq: optimize get_client_pool " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 34/39] ALSA: seq: optimize seq_client_pool " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 35/39] ALSA: seq: optimize remove_events " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 36/39] ALSA: seq: optimize get_subscription " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 37/39] ALSA: seq: optimize query_subs " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 38/39] ALSA: seq: optimize query_next_client " Takashi Sakamoto
2016-08-07  9:49 ` [PATCH 39/39] ALSA: seq: optimize query_next_port " Takashi Sakamoto

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.