diff --git a/subsys/modem/modem_cmux.c b/subsys/modem/modem_cmux.c index d5547e03da28..30d80b3ec0bc 100644 --- a/subsys/modem/modem_cmux.c +++ b/subsys/modem/modem_cmux.c @@ -1108,26 +1108,29 @@ static int modem_cmux_dlci_pipe_api_transmit(void *data, const uint8_t *buf, siz { struct modem_cmux_dlci *dlci = (struct modem_cmux_dlci *)data; struct modem_cmux *cmux = dlci->cmux; - int ret = 0; - - K_SPINLOCK(&cmux->work_lock) { - if (!cmux->attached) { - ret = -EPERM; - K_SPINLOCK_BREAK; - } + int ret; - struct modem_cmux_frame frame = { - .dlci_address = dlci->dlci_address, - .cr = true, - .pf = false, - .type = MODEM_CMUX_FRAME_TYPE_UIH, - .data = buf, - .data_len = size, - }; + k_spinlock_key_t key = k_spin_lock(&cmux->work_lock); - ret = modem_cmux_transmit_data_frame(cmux, &frame); + if (!cmux->attached) { + ret = -EPERM; + k_spin_unlock(&cmux->work_lock, key); + return ret; } + struct modem_cmux_frame frame = { + .dlci_address = dlci->dlci_address, + .cr = true, + .pf = false, + .type = MODEM_CMUX_FRAME_TYPE_UIH, + .data = buf, + .data_len = size, + }; + + ret = modem_cmux_transmit_data_frame(cmux, &frame); + + k_spin_unlock(&cmux->work_lock, key); + return ret; } diff --git a/subsys/modem/modem_pipelink.c b/subsys/modem/modem_pipelink.c index e52d0117f62d..35faf9c3ad7a 100644 --- a/subsys/modem/modem_pipelink.c +++ b/subsys/modem/modem_pipelink.c @@ -29,9 +29,11 @@ bool modem_pipelink_is_connected(struct modem_pipelink *link) { bool connected; - K_SPINLOCK(&link->spinlock) { - connected = link->connected; - } + k_spinlock_key_t key = k_spin_lock(&link->spinlock); + + connected = link->connected; + + k_spin_unlock(&link->spinlock, key); return connected; } diff --git a/subsys/modem/modem_stats.c b/subsys/modem/modem_stats.c index e1790cb815a3..4b7fef1a0127 100644 --- a/subsys/modem/modem_stats.c +++ b/subsys/modem/modem_stats.c @@ -32,22 +32,26 @@ static void stats_buffer_list_append(struct modem_stats_buffer *buffer) static struct modem_stats_buffer *stats_buffer_list_first(void) { - struct modem_stats_buffer *first = NULL; + struct modem_stats_buffer *first; - K_SPINLOCK(&stats_buffer_lock) { - first = stats_buffer_from_node(sys_slist_peek_head(&stats_buffer_list)); - } + k_spinlock_key_t key = k_spin_lock(&stats_buffer_lock); + + first = stats_buffer_from_node(sys_slist_peek_head(&stats_buffer_list)); + + k_spin_unlock(&stats_buffer_lock, key); return first; } static struct modem_stats_buffer *stats_buffer_list_next(struct modem_stats_buffer *buffer) { - struct modem_stats_buffer *next = NULL; + struct modem_stats_buffer *next; - K_SPINLOCK(&stats_buffer_lock) { - next = stats_buffer_from_node(sys_slist_peek_next(&buffer->node)); - } + k_spinlock_key_t key = k_spin_lock(&stats_buffer_lock); + + next = stats_buffer_from_node(sys_slist_peek_next(&buffer->node)); + + k_spin_unlock(&stats_buffer_lock, key); return next; }