mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
locking/atomics: COCCINELLE/treewide: Convert trivial ACCESS_ONCE() patterns to READ_ONCE()/WRITE_ONCE()
Please do not apply this to mainline directly, instead please re-run the
coccinelle script shown below and apply its output.
For several reasons, it is desirable to use {READ,WRITE}_ONCE() in
preference to ACCESS_ONCE(), and new code is expected to use one of the
former. So far, there's been no reason to change most existing uses of
ACCESS_ONCE(), as these aren't harmful, and changing them results in
churn.
However, for some features, the read/write distinction is critical to
correct operation. To distinguish these cases, separate read/write
accessors must be used. This patch migrates (most) remaining
ACCESS_ONCE() instances to {READ,WRITE}_ONCE(), using the following
coccinelle script:
----
// Convert trivial ACCESS_ONCE() uses to equivalent READ_ONCE() and
// WRITE_ONCE()
// $ make coccicheck COCCI=/home/mark/once.cocci SPFLAGS="--include-headers" MODE=patch
virtual patch
@ depends on patch @
expression E1, E2;
@@
- ACCESS_ONCE(E1) = E2
+ WRITE_ONCE(E1, E2)
@ depends on patch @
expression E;
@@
- ACCESS_ONCE(E)
+ READ_ONCE(E)
----
Signed-off-by: Mark Rutland <[email protected]>
Signed-off-by: Paul E. McKenney <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
This commit is contained in:
parent
b03a0fe0c5
commit
6aa7de0591
180 changed files with 383 additions and 385 deletions
|
|
@ -247,7 +247,7 @@ void amdtp_am824_midi_trigger(struct amdtp_stream *s, unsigned int port,
|
|||
struct amdtp_am824 *p = s->protocol;
|
||||
|
||||
if (port < p->midi_ports)
|
||||
ACCESS_ONCE(p->midi[port]) = midi;
|
||||
WRITE_ONCE(p->midi[port], midi);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(amdtp_am824_midi_trigger);
|
||||
|
||||
|
|
@ -336,7 +336,7 @@ static unsigned int process_rx_data_blocks(struct amdtp_stream *s, __be32 *buffe
|
|||
unsigned int data_blocks, unsigned int *syt)
|
||||
{
|
||||
struct amdtp_am824 *p = s->protocol;
|
||||
struct snd_pcm_substream *pcm = ACCESS_ONCE(s->pcm);
|
||||
struct snd_pcm_substream *pcm = READ_ONCE(s->pcm);
|
||||
unsigned int pcm_frames;
|
||||
|
||||
if (pcm) {
|
||||
|
|
@ -357,7 +357,7 @@ static unsigned int process_tx_data_blocks(struct amdtp_stream *s, __be32 *buffe
|
|||
unsigned int data_blocks, unsigned int *syt)
|
||||
{
|
||||
struct amdtp_am824 *p = s->protocol;
|
||||
struct snd_pcm_substream *pcm = ACCESS_ONCE(s->pcm);
|
||||
struct snd_pcm_substream *pcm = READ_ONCE(s->pcm);
|
||||
unsigned int pcm_frames;
|
||||
|
||||
if (pcm) {
|
||||
|
|
|
|||
|
|
@ -376,7 +376,7 @@ static void update_pcm_pointers(struct amdtp_stream *s,
|
|||
ptr = s->pcm_buffer_pointer + frames;
|
||||
if (ptr >= pcm->runtime->buffer_size)
|
||||
ptr -= pcm->runtime->buffer_size;
|
||||
ACCESS_ONCE(s->pcm_buffer_pointer) = ptr;
|
||||
WRITE_ONCE(s->pcm_buffer_pointer, ptr);
|
||||
|
||||
s->pcm_period_pointer += frames;
|
||||
if (s->pcm_period_pointer >= pcm->runtime->period_size) {
|
||||
|
|
@ -388,7 +388,7 @@ static void update_pcm_pointers(struct amdtp_stream *s,
|
|||
static void pcm_period_tasklet(unsigned long data)
|
||||
{
|
||||
struct amdtp_stream *s = (void *)data;
|
||||
struct snd_pcm_substream *pcm = ACCESS_ONCE(s->pcm);
|
||||
struct snd_pcm_substream *pcm = READ_ONCE(s->pcm);
|
||||
|
||||
if (pcm)
|
||||
snd_pcm_period_elapsed(pcm);
|
||||
|
|
@ -453,7 +453,7 @@ static int handle_out_packet(struct amdtp_stream *s,
|
|||
s->data_block_counter =
|
||||
(s->data_block_counter + data_blocks) & 0xff;
|
||||
|
||||
buffer[0] = cpu_to_be32(ACCESS_ONCE(s->source_node_id_field) |
|
||||
buffer[0] = cpu_to_be32(READ_ONCE(s->source_node_id_field) |
|
||||
(s->data_block_quadlets << CIP_DBS_SHIFT) |
|
||||
((s->sph << CIP_SPH_SHIFT) & CIP_SPH_MASK) |
|
||||
s->data_block_counter);
|
||||
|
|
@ -472,7 +472,7 @@ static int handle_out_packet(struct amdtp_stream *s,
|
|||
if (queue_out_packet(s, payload_length) < 0)
|
||||
return -EIO;
|
||||
|
||||
pcm = ACCESS_ONCE(s->pcm);
|
||||
pcm = READ_ONCE(s->pcm);
|
||||
if (pcm && pcm_frames > 0)
|
||||
update_pcm_pointers(s, pcm, pcm_frames);
|
||||
|
||||
|
|
@ -504,7 +504,7 @@ static int handle_out_packet_without_header(struct amdtp_stream *s,
|
|||
if (queue_out_packet(s, payload_length) < 0)
|
||||
return -EIO;
|
||||
|
||||
pcm = ACCESS_ONCE(s->pcm);
|
||||
pcm = READ_ONCE(s->pcm);
|
||||
if (pcm && pcm_frames > 0)
|
||||
update_pcm_pointers(s, pcm, pcm_frames);
|
||||
|
||||
|
|
@ -621,7 +621,7 @@ end:
|
|||
if (queue_in_packet(s) < 0)
|
||||
return -EIO;
|
||||
|
||||
pcm = ACCESS_ONCE(s->pcm);
|
||||
pcm = READ_ONCE(s->pcm);
|
||||
if (pcm && pcm_frames > 0)
|
||||
update_pcm_pointers(s, pcm, pcm_frames);
|
||||
|
||||
|
|
@ -649,7 +649,7 @@ static int handle_in_packet_without_header(struct amdtp_stream *s,
|
|||
if (queue_in_packet(s) < 0)
|
||||
return -EIO;
|
||||
|
||||
pcm = ACCESS_ONCE(s->pcm);
|
||||
pcm = READ_ONCE(s->pcm);
|
||||
if (pcm && pcm_frames > 0)
|
||||
update_pcm_pointers(s, pcm, pcm_frames);
|
||||
|
||||
|
|
@ -947,7 +947,7 @@ unsigned long amdtp_stream_pcm_pointer(struct amdtp_stream *s)
|
|||
if (!in_interrupt() && amdtp_stream_running(s))
|
||||
fw_iso_context_flush_completions(s->context);
|
||||
|
||||
return ACCESS_ONCE(s->pcm_buffer_pointer);
|
||||
return READ_ONCE(s->pcm_buffer_pointer);
|
||||
}
|
||||
EXPORT_SYMBOL(amdtp_stream_pcm_pointer);
|
||||
|
||||
|
|
@ -977,9 +977,8 @@ EXPORT_SYMBOL(amdtp_stream_pcm_ack);
|
|||
void amdtp_stream_update(struct amdtp_stream *s)
|
||||
{
|
||||
/* Precomputing. */
|
||||
ACCESS_ONCE(s->source_node_id_field) =
|
||||
(fw_parent_device(s->unit)->card->node_id << CIP_SID_SHIFT) &
|
||||
CIP_SID_MASK;
|
||||
WRITE_ONCE(s->source_node_id_field,
|
||||
(fw_parent_device(s->unit)->card->node_id << CIP_SID_SHIFT) & CIP_SID_MASK);
|
||||
}
|
||||
EXPORT_SYMBOL(amdtp_stream_update);
|
||||
|
||||
|
|
@ -1022,7 +1021,7 @@ void amdtp_stream_pcm_abort(struct amdtp_stream *s)
|
|||
{
|
||||
struct snd_pcm_substream *pcm;
|
||||
|
||||
pcm = ACCESS_ONCE(s->pcm);
|
||||
pcm = READ_ONCE(s->pcm);
|
||||
if (pcm)
|
||||
snd_pcm_stop_xrun(pcm);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -220,7 +220,7 @@ static inline bool amdtp_stream_pcm_running(struct amdtp_stream *s)
|
|||
static inline void amdtp_stream_pcm_trigger(struct amdtp_stream *s,
|
||||
struct snd_pcm_substream *pcm)
|
||||
{
|
||||
ACCESS_ONCE(s->pcm) = pcm;
|
||||
WRITE_ONCE(s->pcm, pcm);
|
||||
}
|
||||
|
||||
static inline bool cip_sfc_is_base_44100(enum cip_sfc sfc)
|
||||
|
|
|
|||
|
|
@ -327,7 +327,7 @@ void amdtp_dot_midi_trigger(struct amdtp_stream *s, unsigned int port,
|
|||
struct amdtp_dot *p = s->protocol;
|
||||
|
||||
if (port < MAX_MIDI_PORTS)
|
||||
ACCESS_ONCE(p->midi[port]) = midi;
|
||||
WRITE_ONCE(p->midi[port], midi);
|
||||
}
|
||||
|
||||
static unsigned int process_tx_data_blocks(struct amdtp_stream *s,
|
||||
|
|
@ -338,7 +338,7 @@ static unsigned int process_tx_data_blocks(struct amdtp_stream *s,
|
|||
struct snd_pcm_substream *pcm;
|
||||
unsigned int pcm_frames;
|
||||
|
||||
pcm = ACCESS_ONCE(s->pcm);
|
||||
pcm = READ_ONCE(s->pcm);
|
||||
if (pcm) {
|
||||
read_pcm_s32(s, pcm, buffer, data_blocks);
|
||||
pcm_frames = data_blocks;
|
||||
|
|
@ -359,7 +359,7 @@ static unsigned int process_rx_data_blocks(struct amdtp_stream *s,
|
|||
struct snd_pcm_substream *pcm;
|
||||
unsigned int pcm_frames;
|
||||
|
||||
pcm = ACCESS_ONCE(s->pcm);
|
||||
pcm = READ_ONCE(s->pcm);
|
||||
if (pcm) {
|
||||
write_pcm_s32(s, pcm, buffer, data_blocks);
|
||||
pcm_frames = data_blocks;
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ static unsigned int process_rx_data_blocks(struct amdtp_stream *s,
|
|||
unsigned int data_blocks,
|
||||
unsigned int *syt)
|
||||
{
|
||||
struct snd_pcm_substream *pcm = ACCESS_ONCE(s->pcm);
|
||||
struct snd_pcm_substream *pcm = READ_ONCE(s->pcm);
|
||||
unsigned int pcm_frames;
|
||||
|
||||
if (pcm) {
|
||||
|
|
@ -127,7 +127,7 @@ static unsigned int process_tx_data_blocks(struct amdtp_stream *s,
|
|||
unsigned int data_blocks,
|
||||
unsigned int *syt)
|
||||
{
|
||||
struct snd_pcm_substream *pcm = ACCESS_ONCE(s->pcm);
|
||||
struct snd_pcm_substream *pcm = READ_ONCE(s->pcm);
|
||||
unsigned int pcm_frames;
|
||||
|
||||
if (pcm) {
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ static int midi_playback_open(struct snd_rawmidi_substream *substream)
|
|||
ff->running_status[substream->number] = 0;
|
||||
ff->rx_midi_error[substream->number] = false;
|
||||
|
||||
ACCESS_ONCE(ff->rx_midi_substreams[substream->number]) = substream;
|
||||
WRITE_ONCE(ff->rx_midi_substreams[substream->number], substream);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -38,7 +38,7 @@ static int midi_playback_close(struct snd_rawmidi_substream *substream)
|
|||
struct snd_ff *ff = substream->rmidi->private_data;
|
||||
|
||||
cancel_work_sync(&ff->rx_midi_work[substream->number]);
|
||||
ACCESS_ONCE(ff->rx_midi_substreams[substream->number]) = NULL;
|
||||
WRITE_ONCE(ff->rx_midi_substreams[substream->number], NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -52,10 +52,10 @@ static void midi_capture_trigger(struct snd_rawmidi_substream *substream,
|
|||
spin_lock_irqsave(&ff->lock, flags);
|
||||
|
||||
if (up)
|
||||
ACCESS_ONCE(ff->tx_midi_substreams[substream->number]) =
|
||||
substream;
|
||||
WRITE_ONCE(ff->tx_midi_substreams[substream->number],
|
||||
substream);
|
||||
else
|
||||
ACCESS_ONCE(ff->tx_midi_substreams[substream->number]) = NULL;
|
||||
WRITE_ONCE(ff->tx_midi_substreams[substream->number], NULL);
|
||||
|
||||
spin_unlock_irqrestore(&ff->lock, flags);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ static void finish_transmit_midi_msg(struct snd_ff *ff, unsigned int port,
|
|||
int rcode)
|
||||
{
|
||||
struct snd_rawmidi_substream *substream =
|
||||
ACCESS_ONCE(ff->rx_midi_substreams[port]);
|
||||
READ_ONCE(ff->rx_midi_substreams[port]);
|
||||
|
||||
if (rcode_is_permanent_error(rcode)) {
|
||||
ff->rx_midi_error[port] = true;
|
||||
|
|
@ -60,7 +60,7 @@ static inline void fill_midi_buf(struct snd_ff *ff, unsigned int port,
|
|||
static void transmit_midi_msg(struct snd_ff *ff, unsigned int port)
|
||||
{
|
||||
struct snd_rawmidi_substream *substream =
|
||||
ACCESS_ONCE(ff->rx_midi_substreams[port]);
|
||||
READ_ONCE(ff->rx_midi_substreams[port]);
|
||||
u8 *buf = (u8 *)ff->msg_buf[port];
|
||||
int i, len;
|
||||
|
||||
|
|
@ -159,7 +159,7 @@ static void handle_midi_msg(struct fw_card *card, struct fw_request *request,
|
|||
*/
|
||||
index = (quad >> 8) & 0xff;
|
||||
if (index > 0) {
|
||||
substream = ACCESS_ONCE(ff->tx_midi_substreams[0]);
|
||||
substream = READ_ONCE(ff->tx_midi_substreams[0]);
|
||||
if (substream != NULL) {
|
||||
byte = quad & 0xff;
|
||||
snd_rawmidi_receive(substream, &byte, 1);
|
||||
|
|
@ -169,7 +169,7 @@ static void handle_midi_msg(struct fw_card *card, struct fw_request *request,
|
|||
/* Message in second port. */
|
||||
index = (quad >> 24) & 0xff;
|
||||
if (index > 0) {
|
||||
substream = ACCESS_ONCE(ff->tx_midi_substreams[1]);
|
||||
substream = READ_ONCE(ff->tx_midi_substreams[1]);
|
||||
if (substream != NULL) {
|
||||
byte = (quad >> 16) & 0xff;
|
||||
snd_rawmidi_receive(substream, &byte, 1);
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ static void isight_update_pointers(struct isight *isight, unsigned int count)
|
|||
ptr += count;
|
||||
if (ptr >= runtime->buffer_size)
|
||||
ptr -= runtime->buffer_size;
|
||||
ACCESS_ONCE(isight->buffer_pointer) = ptr;
|
||||
WRITE_ONCE(isight->buffer_pointer, ptr);
|
||||
|
||||
isight->period_counter += count;
|
||||
if (isight->period_counter >= runtime->period_size) {
|
||||
|
|
@ -111,7 +111,7 @@ static void isight_samples(struct isight *isight,
|
|||
struct snd_pcm_runtime *runtime;
|
||||
unsigned int count1;
|
||||
|
||||
if (!ACCESS_ONCE(isight->pcm_running))
|
||||
if (!READ_ONCE(isight->pcm_running))
|
||||
return;
|
||||
|
||||
runtime = isight->pcm->runtime;
|
||||
|
|
@ -131,7 +131,7 @@ static void isight_samples(struct isight *isight,
|
|||
|
||||
static void isight_pcm_abort(struct isight *isight)
|
||||
{
|
||||
if (ACCESS_ONCE(isight->pcm_active))
|
||||
if (READ_ONCE(isight->pcm_active))
|
||||
snd_pcm_stop_xrun(isight->pcm);
|
||||
}
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ static void isight_dropped_samples(struct isight *isight, unsigned int total)
|
|||
u32 dropped;
|
||||
unsigned int count1;
|
||||
|
||||
if (!ACCESS_ONCE(isight->pcm_running))
|
||||
if (!READ_ONCE(isight->pcm_running))
|
||||
return;
|
||||
|
||||
runtime = isight->pcm->runtime;
|
||||
|
|
@ -293,7 +293,7 @@ static int isight_hw_params(struct snd_pcm_substream *substream,
|
|||
if (err < 0)
|
||||
return err;
|
||||
|
||||
ACCESS_ONCE(isight->pcm_active) = true;
|
||||
WRITE_ONCE(isight->pcm_active, true);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -331,7 +331,7 @@ static int isight_hw_free(struct snd_pcm_substream *substream)
|
|||
{
|
||||
struct isight *isight = substream->private_data;
|
||||
|
||||
ACCESS_ONCE(isight->pcm_active) = false;
|
||||
WRITE_ONCE(isight->pcm_active, false);
|
||||
|
||||
mutex_lock(&isight->mutex);
|
||||
isight_stop_streaming(isight);
|
||||
|
|
@ -424,10 +424,10 @@ static int isight_trigger(struct snd_pcm_substream *substream, int cmd)
|
|||
|
||||
switch (cmd) {
|
||||
case SNDRV_PCM_TRIGGER_START:
|
||||
ACCESS_ONCE(isight->pcm_running) = true;
|
||||
WRITE_ONCE(isight->pcm_running, true);
|
||||
break;
|
||||
case SNDRV_PCM_TRIGGER_STOP:
|
||||
ACCESS_ONCE(isight->pcm_running) = false;
|
||||
WRITE_ONCE(isight->pcm_running, false);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
|
@ -439,7 +439,7 @@ static snd_pcm_uframes_t isight_pointer(struct snd_pcm_substream *substream)
|
|||
{
|
||||
struct isight *isight = substream->private_data;
|
||||
|
||||
return ACCESS_ONCE(isight->buffer_pointer);
|
||||
return READ_ONCE(isight->buffer_pointer);
|
||||
}
|
||||
|
||||
static int isight_create_pcm(struct isight *isight)
|
||||
|
|
|
|||
|
|
@ -310,7 +310,7 @@ static unsigned int process_tx_data_blocks(struct amdtp_stream *s,
|
|||
if (p->midi_ports)
|
||||
read_midi_messages(s, buffer, data_blocks);
|
||||
|
||||
pcm = ACCESS_ONCE(s->pcm);
|
||||
pcm = READ_ONCE(s->pcm);
|
||||
if (data_blocks > 0 && pcm)
|
||||
read_pcm_s32(s, pcm->runtime, buffer, data_blocks);
|
||||
|
||||
|
|
@ -374,7 +374,7 @@ static unsigned int process_rx_data_blocks(struct amdtp_stream *s,
|
|||
if (p->midi_ports)
|
||||
write_midi_messages(s, buffer, data_blocks);
|
||||
|
||||
pcm = ACCESS_ONCE(s->pcm);
|
||||
pcm = READ_ONCE(s->pcm);
|
||||
if (pcm)
|
||||
write_pcm_s32(s, pcm->runtime, buffer, data_blocks);
|
||||
else
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ static void handle_hss(struct fw_card *card, struct fw_request *request,
|
|||
}
|
||||
|
||||
if (length >= 1) {
|
||||
stream = ACCESS_ONCE(scs->input);
|
||||
stream = READ_ONCE(scs->input);
|
||||
if (stream)
|
||||
midi_input_packet(scs, stream, data, length);
|
||||
}
|
||||
|
|
@ -183,7 +183,7 @@ static void scs_output_work(struct work_struct *work)
|
|||
if (scs->transaction_running)
|
||||
return;
|
||||
|
||||
stream = ACCESS_ONCE(scs->output);
|
||||
stream = READ_ONCE(scs->output);
|
||||
if (!stream || scs->error) {
|
||||
scs->output_idle = true;
|
||||
wake_up(&scs->idle_wait);
|
||||
|
|
@ -291,9 +291,9 @@ static void midi_capture_trigger(struct snd_rawmidi_substream *stream, int up)
|
|||
|
||||
if (up) {
|
||||
scs->input_escape_count = 0;
|
||||
ACCESS_ONCE(scs->input) = stream;
|
||||
WRITE_ONCE(scs->input, stream);
|
||||
} else {
|
||||
ACCESS_ONCE(scs->input) = NULL;
|
||||
WRITE_ONCE(scs->input, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -319,10 +319,10 @@ static void midi_playback_trigger(struct snd_rawmidi_substream *stream, int up)
|
|||
scs->transaction_bytes = 0;
|
||||
scs->error = false;
|
||||
|
||||
ACCESS_ONCE(scs->output) = stream;
|
||||
WRITE_ONCE(scs->output, stream);
|
||||
schedule_work(&scs->work);
|
||||
} else {
|
||||
ACCESS_ONCE(scs->output) = NULL;
|
||||
WRITE_ONCE(scs->output, NULL);
|
||||
}
|
||||
}
|
||||
static void midi_playback_drain(struct snd_rawmidi_substream *stream)
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ static unsigned int process_tx_data_blocks(struct amdtp_stream *s,
|
|||
{
|
||||
struct snd_pcm_substream *pcm;
|
||||
|
||||
pcm = ACCESS_ONCE(s->pcm);
|
||||
pcm = READ_ONCE(s->pcm);
|
||||
if (data_blocks > 0 && pcm)
|
||||
read_pcm_s32(s, pcm, buffer, data_blocks);
|
||||
|
||||
|
|
@ -143,7 +143,7 @@ static unsigned int process_rx_data_blocks(struct amdtp_stream *s,
|
|||
/* This field is not used. */
|
||||
*syt = 0x0000;
|
||||
|
||||
pcm = ACCESS_ONCE(s->pcm);
|
||||
pcm = READ_ONCE(s->pcm);
|
||||
if (pcm)
|
||||
write_pcm_s32(s, pcm, buffer, data_blocks);
|
||||
else
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ static void async_midi_port_callback(struct fw_card *card, int rcode,
|
|||
void *callback_data)
|
||||
{
|
||||
struct snd_fw_async_midi_port *port = callback_data;
|
||||
struct snd_rawmidi_substream *substream = ACCESS_ONCE(port->substream);
|
||||
struct snd_rawmidi_substream *substream = READ_ONCE(port->substream);
|
||||
|
||||
/* This port is closed. */
|
||||
if (substream == NULL)
|
||||
|
|
@ -173,7 +173,7 @@ static void midi_port_work(struct work_struct *work)
|
|||
{
|
||||
struct snd_fw_async_midi_port *port =
|
||||
container_of(work, struct snd_fw_async_midi_port, work);
|
||||
struct snd_rawmidi_substream *substream = ACCESS_ONCE(port->substream);
|
||||
struct snd_rawmidi_substream *substream = READ_ONCE(port->substream);
|
||||
int generation;
|
||||
|
||||
/* Under transacting or error state. */
|
||||
|
|
@ -282,7 +282,7 @@ static void handle_midi_tx(struct fw_card *card, struct fw_request *request,
|
|||
bytes = 3;
|
||||
}
|
||||
|
||||
substream = ACCESS_ONCE(tscm->tx_midi_substreams[port]);
|
||||
substream = READ_ONCE(tscm->tx_midi_substreams[port]);
|
||||
if (substream != NULL)
|
||||
snd_rawmidi_receive(substream, b + 1, bytes);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue